【问题标题】:Andengine - handler.postDelayed doesn't workAndengine - handler.postDelayed 不起作用
【发布时间】:2014-01-12 23:12:56
【问题描述】:

我想在一秒钟后在我的游戏中做一个简单的动作。我有我的 GameScene 类,它扩展了 Andengine 的场景。

public class GameScene extends Scene{
   //(...)
   Handler delayHandler;

   public GameScene(){
      Looper.prepare();
      delayHandler = new Handler();
   }
   //(...)

   public void sphereTouched(){
      //(...)
      delayHandler.postDelayed(new Runnable() {
         public void run(){
            Log.d("DEB","postDelayed test");
         }
      }, 1000); 
   }
}

当从 postDelayed 调用 sphereTouched 函数时,操作不会运行。该功能的其他操作正常工作。我错过了什么吗?

【问题讨论】:

  • 你不使用 Asynctask 吗?
  • 你初始化 delayHandler 了吗?
  • 我不知道这是否相关(也许您有两个单独的处理程序并且只初始化一个?)或没有(可能只是此处发布的代码中的一个错误),但请注意您是在sphereTouched 中使用delayHandler,但只在构造函数中初始化handler
  • 日志中有什么内容?
  • @kabuko - 抱歉,我在写问题时犯了一个错误。构造函数中有一个delayHandler(我刚刚更正了它)。

标签: java android handler andengine postdelayed


【解决方案1】:

将此代码用于处理程序。

    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

        @Override
        public void run() {
            // your code
        }
    }, 1000);

【讨论】:

  • 有什么不同?
  • @Override public void run() { // 你的代码 }
  • 确实,我错过了@Override注解,但添加后没有任何改变。
  • 检查sphereTouched()方法是否被调用??
  • @surbiks - 是的。该方法中还有其他操作,效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多