addto中的globaltoLocal

时间:2013-08-18 23:10:31

标签: actionscript-3 flash addchild

我有一个添加攻击影片剪辑的敌人。更具体地说,这个攻击影片(我们称之为masterAttack)剪辑是一个空白的影片剪辑,就像一个超级类,可以进行其他攻击,如弱攻击和强攻击。因此,当我的敌人使用计时器攻击时,它会在全局到本地点添加masterAttack。

下面是敌人计时器攻击玩家所在的牌:

if (Main.tileset[k].tileMiddle.hitTestObject(Main.player.visionPoint))
{
         this.addChild(masterAttack);
         var pt:Point = this.enemymagic.globalToLocal(new Point(Main.tileset[k].x, Main.tileset[k].y));
         masterAttack.masterEnemyAttackTimer.start();

         this.masterAttack.x = (pt.x);
         this.masterAttack.y = (pt.y);
}

以下是masterAttack计时器:

function mastertimer(event:TimerEvent) {
                    addChild(sludgeball); //This is one of the many attacks pickable by the masterAttack
                              sludgeball.enemyattackTimer.start();
                              if (this.sludgeball.currentLabel == "End") {
                                        this.sludgeball.gotoAndPlay(1);
                                        masterEnemyAttackTimer.stop();

                              if (masterEnemyAttackTimer.running == false)
                              {
                                        attackStop = true;
                                        this.parent.removeChild(this);
                                        removeChild(sludgeball);
                              }
                    }

我的问题是,在第一次运行时,masterAttack会攻击玩家,无论它在哪里,然后自行删除,这很好。然后在下次运行时,masterAttack没有击中玩家。就好像globaltoLocal在第一次运行后没有工作。

1 个答案:

答案 0 :(得分:0)

this.addChild(masterAttack);

var pt:Point = this.enemymagic.globalToLocal(new Point(Main.tileset[k].x, Main.tileset[k].y));

你添加了masterAttack,但你得到了使用enemymagic的globalToLocal

所以改变这样的行

var pt:Point = this.globalToLocal(new Point(Main.tileset[k].x, Main.tileset[k].y));