【问题标题】:Enter Frame Loop is updating the enemy class but enemy is not moving进入帧循环正在更新敌人类,但敌人没有移动
【发布时间】:2014-05-12 20:51:39
【问题描述】:
    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;


    }

这是敌人类,你可以看到我没有使用输入框来移动它。相反,我是主班……

    private function updatePlayer():void 
    {
        character.keyListner();
        character.movementChar();
        goblin1.goblinLoop();
        goblin2.goblinLoop();

    }

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

【问题讨论】:

  • 在 updatePlayer 方法中尝试 goblin1.x -= 4 是否有效?
  • 不,goblin1.x -=4 不会让它移动,不过感谢您的输入
  • 向我们展示更多代码可能会对您有所帮助。
  • 跟踪是否每帧都被调用?
  • 很可能你的地精没有被添加到舞台上,所以你移动了错误的地精。他们移动,但他们不是你要找的妖精。 jedi hand move要调试这个,你可以在Goblin.goblinLoop函数里做trace("yes", this.name),在updatePlayer函数里做trace(goblin1.name,goblin2.name)

标签: actionscript-3 flash flash-cs5


【解决方案1】:

我现在已经回到enterFrame,当我开发技能并更多地研究enterFrames为什么不使用它们(多线程游戏)时,我将使用更新方法。

感谢您的意见。

【讨论】:

  • 无论如何,如果您希望您的游戏真正自动执行某些操作,您至少需要一个输入帧侦听器。 (但是,您可以使用计时器,但 enterframe 确保您的游戏以恒定的速度更新,从游戏逻辑方面来看。)在那里,您应该有很多事情要做,比如updateAllGoblins()updatePlayer()、@ 987654323@ 等,在这些中,您针对所有对象调用 update() 的适当对象数组运行一次​​ for-each 循环。这是任何称为“游戏循环”的游戏的核心。当然,所有的状态变化也必须在那里进行解析。
猜你喜欢
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2015-04-28
相关资源
最近更新 更多