罗喉
当前问题:令body.alpha = 0.5 后,会变得很卡,同时当执行到其他动作帧的时候alpha会自动恢复到1。
1 package export.monster 2 { 3 import base.*; 4 import com.greensock.*; 5 import event.*; 6 import export.bullet.*; 7 import export.hero.*; 8 import manager.*; 9 import my.*; 10 import user.*; 11 12 public class Monster46 extends base.BaseMonster 13 { 14 public function Monster46() 15 { 16 this.wuDi = false; 17 hasZhaoHuanPoYaZhi = false; 18 this.control = false; 19 this.flyBulletArray = new Array(); 20 eyes = 0; 21 var loc1:*=null; 22 super(); 23 this.isBoss = true; 24 this.monsterName = "罗喉"; 25 this.horizenSpeed = 9; 26 var loc2:*=true; 27 var loc3:*=gc.getPlayerArray(); 28 var loc4:*=0; 29 while (loc4 < loc3.length) 30 { 31 if ((loc1 = loc3[loc4] as base.BaseHero).roleProperies.getLevel() > 15) 32 { 33 loc2 = false; 34 break; 35 } 36 ++loc4; 37 } 38 this.protectedParamsObject.Hp = 200000; 39 this.protectedParamsObject.def = 433; 40 this.protectedParamsObject.mDef = 0.4; 41 this.protectedParamsObject.sHp = this.protectedParamsObject.Hp; 42 this.attackBackInfoDict["hit1"] = {"hitMaxCount":99, "attackBackSpeed":[6, -5], "attackInterval":4, "power":650, "attackKind":"physics"}; 43 this.attackBackInfoDict["hit2"] = {"hitMaxCount":30, "attackBackSpeed":[2, -7], "attackInterval":4, "power":670, "attackKind":"physics"}; 44 this.attackBackInfoDict["hit3"] = {"hitMaxCount":40, "attackBackSpeed":[2, -4], "attackInterval":4, "power":780, "attackKind":"magic"}; 45 this.attackBackInfoDict["hit4"] = {"hitMaxCount":30, "attackBackSpeed":[8, -2], "attackInterval":4, "power":750, "attackKind":"magic"}; 46 this.protectedParamsObject.mysee = 300; 47 this.protectedParamsObject.isattback = 50; 48 this.attackRange = 180; 49 this.protectedParamsObject.exp = 100; 50 this.protectedParamsObject.gxp = 80; 51 this.protectedParamsObject.stoneFallRate = 1; 52 this.protectedParamsObject.probability = 1; 53 this.fallList = [{"name":"xhmt", "bigtype":"zb"}]; 54 return; 55 } 56 57 public override function beAttack(arg1:base.BaseHero):void 58 { 59 if (this.wuDi) 60 return; 61 var param1:base.BaseHero; 62 var _target:base.BaseHero; 63 var m:int; 64 var bb:base.BaseBullet; 65 var obj:Object; 66 var hurt:int; 67 var basehurt:int; 68 var isCrit:Boolean; 69 var lastint:int; 70 var equip:my.MyEquipObj; 71 var bloodRate:Number; 72 var stunRate:Number; 73 var loc1:*; 74 var loc2:*; 75 var loc3:*; 76 var arg1:base.BaseHero; 77 78 var loc1:*; 79 param1 = arg1; 80 _target = null; 81 m = 0; 82 bb = null; 83 obj = null; 84 hurt = 0; 85 basehurt = 0; 86 isCrit = false; 87 lastint = 0; 88 equip = null; 89 bloodRate = NaN; 90 stunRate = NaN; 91 loc1 = undefined; 92 loc2 = undefined; 93 loc3 = undefined; 94 arg1 = param1; 95 if (this.curAction == "hit4") 96 { 97 if (eyes < 2) 98 { 99 var loc2:*; 100 eyes++; 101 my.MainGame.getInstance().createMonster(662, this.x, this.y - 500); 102 } 103 } 104 if (!hasZhaoHuanPoYaZhi && this.protectedParamsObject.Hp < 200000) 105 { 106 my.MainGame.getInstance().createMonster(664, this.x, this.y); 107 hasZhaoHuanPoYaZhi = true; 108 } 109 if (this.protectedParamsObject.Hp < this.protectedParamsObject.sHp) 110 { 111 ++this.protectedParamsObject.Hp; 112 } 113 m = 0; 114 bb = null; 115 obj = null; 116 hurt = 0; 117 basehurt = 0; 118 isCrit = false; 119 lastint = 0; 120 equip = null; 121 bloodRate = NaN; 122 stunRate = NaN; 123 _target = arg1; 124 if (_target.body) 125 { 126 if (_target.body.stick) 127 { 128 m = 0; 129 while (m < this.magicBulletArray.length) 130 { 131 bb = this.magicBulletArray[m] as base.BaseBullet; 132 if (bb.isCanBeAttack) 133 { 134 if (bb.hitTestObject(_target.body.stick)) 135 { 136 bb.setDisable(); 137 com.greensock.TweenMax.to(bb, 1, {"alpha":0, "onCompleteParams":[bb], "onComplete":function (arg1:*):* 138 { 139 arg1.destroy(); 140 return; 141 }}) 142 } 143 } 144 ++m; 145 } 146 } 147 } 148 if (this.beAttackIdArray.indexOf(_target.getAttackId()) != -1) 149 { 150 return; 151 } 152 if (this.isBoss && this.curAction == "dead") 153 { 154 return; 155 } 156 if (gc.protectedPerproty.getProperty(this, "isYourFather")) 157 { 158 return; 159 } 160 if (_target.body && this.colipse) 161 { 162 if (_target.body.stick) 163 { 164 if (my.HitTest.complexHitTestObject(this.colipse, _target.body.stick)) 165 { 166 167 loc2 = loc2 = user.User; 168 loc3 = (loc2.batterNum + 1); 169 loc2.batterNum = loc3; 170 this.isattack = true; 171 if (_target is export.hero.Role2Shadow) 172 { 173 this.curAttackTarget = export.hero.Role2Shadow(_target).source; 174 } 175 else 176 { 177 this.curAttackTarget = _target; 178 } 179 if (_target is export.hero.Role1) 180 { 181 manager.SoundManager.play("BeattackByRole1"); 182 } 183 else if (_target is export.hero.Role2 || _target is export.hero.Role2Shadow) 184 { 185 manager.SoundManager.play("BeattackByRole2"); 186 } 187 this.drawMonsterHp(); 188 this.showHpSlip(); 189 obj = _target.attackBackInfoDict[_target.curAction]; 190 hurt = _target.getRealPower(_target.lastHit); 191 basehurt = _target.getRealPower(_target.lastHit, false); 192 isCrit = false; 193 if (hurt / basehurt > 1.9) 194 { 195 isCrit = true; 196 } 197 lastint = this.getRealHurt(hurt, obj); 198 if (obj && obj.attackKind == "physics") 199 { 200 if (_target is export.hero.Role1) 201 { 202 equip = _target.getPlayer().getCurEquipByType("zbwq"); 203 if (equip) 204 { 205 if (equip.fillName == "gwj" || equip.fillName == "ryjgb") 206 { 207 bloodRate = base.BaseHero(_target).roleProperies.getproperiesObj().eatblood; 208 _target.cureHp(2); 209 } 210 } 211 } 212 } 213 if (obj && obj.attackKind == "physics") 214 { 215 if (_target is export.hero.Role3) 216 { 217 equip = _target.getPlayer().getCurEquipByType("zbwq"); 218 if (equip) 219 { 220 if (equip.fillName == "ssc" || equip.fillName == "jcdp") 221 { 222 stunRate = base.BaseHero(_target).roleProperies.getproperiesObj().deephit; 223 if (Math.random() < stunRate) 224 { 225 this.addStunEffect(); 226 } 227 } 228 } 229 } 230 } 231 if (this.curAction != "hit4") 232 { 233 this.protectedParamsObject = AUtils.clone(this.protectedParamsObject); 234 this.protectedParamsObject.Hp = this.protectedParamsObject.Hp - lastint; 235 } 236 if (obj) 237 { 238 if (!this.isAttacking()) 239 { 240 this.beAttackBack(_target, obj.attackBackSpeed[0], obj.attackBackSpeed[1]); 241 } 242 if (obj.addEffect) 243 { 244 this.addCurAddEffect(obj.addEffect); 245 } 246 } 247 if (this.isDead()) 248 { 249 if (this.curAction != "dead") 250 { 251 base.BaseHero(this.curAttackTarget).roleProperies.setExper(this.protectedParamsObject.exp); 252 this.curAction = "dead"; 253 } 254 } 255 else if (this.curAction == "wait" || this.curAction == "walk") 256 { 257 this.curAction = "hurt"; 258 } 259 else if (this.curAction != "hurt") 260 { 261 if (this.curAction == "hit4") 262 { 263 _target.reduceHp(90); 264 _target.reduceMp(80); 265 return; 266 } 267 } 268 else 269 { 270 this.body.gotoAndPlay(1); 271 } 272 this.beAttackIdArray.push(_target.getAttackId()); 273 this.addMonHurtMc(lastint, isCrit); 274 this.addBeAttackEffect(_target); 275 } 276 } 277 } 278 return; 279 } 280 281 public override function beMagicAttack(arg1:*, arg2:base.BaseObject, arg3:Boolean=false):Boolean 282 { 283 var loc9:*=undefined; 284 var loc10:*=undefined; 285 if (this.wuDi) 286 { 287 return; 288 } 289 var loc1:*=null; 290 var loc2:*=0; 291 var loc3:*=0; 292 var loc4:*=false; 293 var loc5:*=0; 294 var loc6:*=null; 295 var loc7:*=0; 296 var loc8:*=NaN; 297 if (gc.protectedPerproty.getProperty(this, "isYourFather")) 298 { 299 return false; 300 } 301 if (arg3 || this.colipse && my.HitTest.complexHitTestObject(this, arg1)) 302 { 303 loc10 = ((loc9 = user.User).batterNum + 1); 304 loc9.batterNum = loc10; 305 if (arg2 is export.hero.Role2Shadow) 306 { 307 this.curAttackTarget = export.hero.Role2Shadow(arg2).source; 308 } 309 else 310 { 311 this.curAttackTarget = arg2; 312 } 313 if (loc1 = arg2.attackBackInfoDict[arg1.curAction]) 314 { 315 if (!this.isAttacking()) 316 { 317 this.beAttackBack(arg1, loc1.attackBackSpeed[0], loc1.attackBackSpeed[1]); 318 } 319 if (loc1.addEffect) 320 { 321 this.addCurAddEffect(loc1.addEffect); 322 } 323 } 324 this.drawMonsterHp(); 325 this.isattack = true; 326 this.showHpSlip(); 327 loc4 = false; 328 if (arg2 is export.hero.Role2Shadow) 329 { 330 loc2 = arg2.getRealPower(arg2.curAction); 331 } 332 else 333 { 334 loc2 = arg2.getRealPower(arg1.curAction); 335 } 336 if (arg2 is export.hero.Role2Shadow) 337 { 338 loc3 = arg2.getRealPower(arg2.curAction, false); 339 } 340 else 341 { 342 loc3 = arg2.getRealPower(arg1.curAction, false); 343 } 344 if (loc2 / loc3 >= 1.9) 345 { 346 loc4 = true; 347 } 348 if (arg2 is export.hero.Role1) 349 { 350 manager.SoundManager.play("BeattackByRole1"); 351 } 352 else if (arg2 is export.hero.Role2 || arg2 is export.hero.Role2Shadow) 353 { 354 manager.SoundManager.play("BeattackByRole2"); 355 } 356 if (this.curAction == "hit4") 357 { 358 this.curAttackTarget.reduceHp(80); 359 this.curAttackTarget.reduceMp(80); 360 return; 361 } 362 loc5 = this.getRealHurt(loc2, loc1); 363 if (loc5 > 5000) 364 { 365 loc5 = 5000; 366 } 367 if (this.curAction != "hit4") 368 { 369 this.protectedParamsObject = AUtils.clone(this.protectedParamsObject); 370 this.protectedParamsObject.Hp = this.protectedParamsObject.Hp - loc5; 371 } 372 if (loc1 && loc1.attackKind == "physics") 373 { 374 if (arg2 is export.hero.Role1) 375 { 376 if (loc6 = export.hero.Role1(arg2).getPlayer().getCurEquipByType("zbwq")) 377 { 378 loc7 = loc6.getStrengthValue(); 379 loc8 = 0.05 + loc7 * 0.02; 380 if (loc6.fillName == "gwj") 381 { 382 export.hero.Role1(arg2).cureHp(loc5 * loc8); 383 } 384 } 385 } 386 } 387 if (arg2 is base.BaseHero) 388 { 389 if (this is export.monster.Monster38) 390 { 391 if (base.BaseHero(arg2).getCurAddEffect(base.BaseAddEffect.DEADLINK)) 392 { 393 base.BaseHero(arg2).reduceHp(loc5); 394 } 395 } 396 } 397 gc.eventManger.dispatchEvent(new event.CommonEvent("MonsterIsBeat", [loc2, this.curAttackTarget])); 398 if (arg2 is export.hero.Role2Shadow) 399 { 400 this.addMonHurtMc(loc5, false); 401 } 402 else 403 { 404 this.addMonHurtMc(loc5, false); 405 } 406 if (this.isDead()) 407 { 408 if (this.curAction != "dead") 409 { 410 base.BaseHero(this.curAttackTarget).roleProperies.setExper(this.protectedParamsObject.exp); 411 this.curAction = "dead"; 412 } 413 } 414 else if (this.curAction == "wait" || this.curAction == "walk") 415 { 416 this.curAction = "hurt"; 417 } 418 else if (this.curAction == "hurt") 419 { 420 this.body.gotoAndPlay(4); 421 } 422 this.addBeAttackEffect(arg2); 423 return true; 424 } 425 return false; 426 } 427 428 public override function isCanMoveWhenAttack():Boolean 429 { 430 return this.curAction == "hit2"; 431 } 432 433 protected override function myIntelligence():void 434 { 435 super.myIntelligence(); 436 return; 437 } 438 439 protected override function hasAttackTarget():void 440 { 441 if (this.count % 99 == 0) 442 if (this.getHp() / this.getSHp()) 443 { 444 this.protectedParamsObject.Hp += 3000; 445 this.drawMonsterHp(); 446 this.showHpSlip(); 447 } 448 if (this.count % 98 == 0) 449 this.wuDi = true; 450 if (this.count % 111 == 0) 451 this.wuDi = false; 452 453 if (this.isAttacking() || this.curAction == "hurt") 454 { 455 return; 456 } 457 var loc1:*=NaN; 458 if (Math.random() > 0.7) 459 { 460 this.normalWalk(); 461 } 462 if (this.curAttackTarget && !this.isInSky()) 463 { 464 if (Math.abs(this.x - this.curAttackTarget.x) <= 150) 465 { 466 if (this.protectedParamsObject.skillCD3 == 0) 467 { 468 this.releSkill3(); 469 this.protectedParamsObject = AUtils.clone(this.protectedParamsObject); 470 this.protectedParamsObject.skillCD3 = 360; 471 } 472 else if (this.count % 24 == 0) 473 { 474 if (Math.random() < 0.7) 475 { 476 this.attackTarget(); 477 } 478 else 479 { 480 this.normalWalk(); 481 } 482 } 483 } 484 else if (Math.abs(this.x - this.curAttackTarget.x) <= 300) 485 { 486 if (this.protectedParamsObject.skillCD2 == 0) 487 { 488 loc1 = Math.random(); 489 if (loc1 < 0.8) 490 { 491 this.releSkill2(); 492 this.protectedParamsObject = AUtils.clone(this.protectedParamsObject); 493 this.protectedParamsObject.skillCD2 = 240; 494 } 495 } 496 else if (this.count % 24 == 0) 497 { 498 if (Math.random() < 0.7) 499 { 500 this.attackTarget(); 501 } 502 else 503 { 504 this.normalWalk(); 505 } 506 } 507 } 508 else if (Math.abs(this.x - this.curAttackTarget.x) <= 800) 509 { 510 if (this.protectedParamsObject.skillCD1 == 0) 511 { 512 this.releSkill1(); 513 this.protectedParamsObject = AUtils.clone(this.protectedParamsObject); 514 this.protectedParamsObject.skillCD1 = 140 + int(Math.random() * 100); 515 } 516 else 517 { 518 this.normalWalk(); 519 } 520 } 521 else 522 { 523 this.normalWalk(); 524 } 525 } 526 return; 527 } 528 529 protected override function releSkill1():void 530 { 531 this.newAttackId(); 532 this.faceToTarget(); 533 this.setYourFather(15); 534 this.lastHit = "hit2"; 535 this.curAction = "hit2"; 536 return; 537 } 538 539 protected override function releSkill2():void 540 { 541 this.setYourFather(20); 542 this.faceToTarget(); 543 this.newAttackId(); 544 this.lastHit = "hit3"; 545 this.curAction = "hit3"; 546 return; 547 } 548 549 protected override function releSkill3():void 550 { 551 this.setYourFather(20); 552 this.faceToTarget(); 553 this.newAttackId(); 554 this.lastHit = "hit4"; 555 this.curAction = "hit4"; 556 return; 557 } 558 559 public override function isAttacking():Boolean 560 { 561 return this.curAction == "hit1" || this.curAction == "hit2" || this.curAction == "hit3" || this.curAction == "hit4"; 562 } 563 564 public override function destroy():void 565 { 566 if (this.protectedParamsObject.Hp <= 0) 567 { 568 my.MainGame.getInstance().createMonster(663, 500, 100); 569 } 570 var loc1:*=null; 571 var loc2:*=0; 572 var loc3:*=null; 573 if (!gc.openPig) 574 { 575 if (this.protectedParamsObject.Hp <= 0) 576 { 577 gc.openPig = true; 578 gc.memory.setOtherStorage(); 579 } 580 } 581 super.destroy(); 582 return; 583 } 584 585 public function jiGuang():void 586 { 587 var loc1:*=new export.bullet.EnemyMoveBullet("Monster46Bullet1"); 588 if (this.isLeft) 589 { 590 loc1.x = this.x + 168; 591 } 592 else 593 { 594 loc1.x = this.x - 168; 595 } 596 loc1.y = this.y - 139; 597 loc1.setRole(this); 598 loc1.setAction("hit1"); 599 loc1.setDistance(1500); 600 var loc2:*=this.curAttackTarget.x - loc1.x; 601 var loc3:*=this.curAttackTarget.y - loc1.y; 602 if (this.isLeft) 603 { 604 loc1.rotation = 180 + Math.atan2(loc3, loc2) * 60; 605 } 606 else 607 { 608 loc1.rotation = Math.atan2(loc3, loc2) * 60; 609 } 610 gc.gameSence.addChild(loc1); 611 this.magicBulletArray.push(loc1); 612 return; 613 } 614 615 public var control:Boolean; 616 617 public var flyBulletArray:Array; 618 619 620 public static var eyes:int; 621 622 public static var hasZhaoHuanPoYaZhi:Boolean; 623 624 public var wuDi:Boolean; 625 } 626 }