Actionscript 3 输入帧循环正在更新敌人等级,但敌人没有移动

Actionscript 3 输入帧循环正在更新敌人等级,但敌人没有移动,actionscript-3,flash,flash-cs5,Actionscript 3,Flash,Flash Cs5,这是敌人的职业,你可以看到我没有使用进入框移动它。相反,我是主班的 public function Goblin() { move = true; nTimer = 0; speed = 1; this.addEventListener(Event.ADDED_TO_STAGE, onAdd) } private function onAdd(e:Event):void {

这是敌人的职业,你可以看到我没有使用进入框移动它。相反,我是主班的

    public function Goblin()
    {
        move = true;
        nTimer = 0;
        speed = 1;
        this.addEventListener(Event.ADDED_TO_STAGE, onAdd)
    }

    private function onAdd(e:Event):void 
    {
        trace("added Goblin");
        removeEventListener(Event.ADDED_TO_STAGE, onAdd);
    }

    public function goblinLoop() 
    {
        trace("yes");
        //trace(nTimer);

        this.x -= 4;


    }

我不明白的是,它在输出面板中跟踪“是”,但妖精不会移动,尽管调用了该函数。

我现在回到enterFrame,当我开发了技能并对enterFrame进行了更多研究后,我将使用更新方法来了解为什么不使用它们(多线程游戏)


感谢您的输入。

如果您尝试updatePlayer方法中的goblin1.x-=4,是否有效?不,goblin1.x-=4不会使其移动,感谢您的输入,向我们显示更多代码可能会帮助我们。跟踪是否每帧调用一次?很可能您的小妖精没有被添加到舞台,因此您移动了错误的小妖精。他们会移动,但他们不是你要找的地精。绝地之手移动来调试这个,你可以在
Goblin.goblinLoop
函数中执行
跟踪(“yes”,this.name)
,在
updatePlayer
函数中执行
跟踪(goblin1.name,goblin2.name)
。如果你想让你的游戏自动运行,你至少需要一个输入帧侦听器。(不过,您可以使用计时器,但enterframe可以确保您的游戏以恒定的速度更新,从游戏逻辑的角度来看。)在那里,您应该有一系列的事情要做,比如说
updatealgloblins()
updatePlayer()
updateotherbarriends()
等等。,在这些循环中,针对适当的对象数组运行for each循环,对所有对象调用一次
update()
。这是任何称为“游戏循环”的游戏的核心。当然,所有状态更改也必须在其中进行解析。
    private function updatePlayer():void 
    {
        character.keyListner();
        character.movementChar();
        goblin1.goblinLoop();
        goblin2.goblinLoop();

    }