在if语句满足后执行的其他语句

时间:2013-08-14 04:45:18

标签: java android if-statement andengine

我正在使用AndEngine来开发我的游戏,不过我认为这个问题与AndEngine无关。

如果出现以下情况,我会触发两个可能的对话框:

  1. 用户触摸不正确的区域或
  2. 用户从错误的区域抬起。
  3. 不幸的是,如果用户在不正确的区域触及,当他们抬起时,他们也会遇到错误2 - 从错误的区域抬起。

    简而言之,这是我的代码:

    public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
       float y = pSceneTouchEvent.getY();
       int dialog_count = 0;
    
       if (pSceneTouchEvent.isActionDown() && y < 1000) {
         activity.runOnUiThread(new Runnable() {
           @Override
           public void run() {
             AlertDialog Code
             ..............
         }
        }
        dialog_count ++;
        Log.d("Dialog Count", "Count is " + dialog_count);
       } else if (dialog_count < 1 && pSceneTouchEvent.isActionUp() && y > 105) {
        Log.d("Dialog Count", "Count is still " + dialog_count);
        activity.runOnUiThread(new Runnable() {
           @Override
           public void run() {
           Second AlertDialog Code
           .................
       }
      }
     }
      return false;
     }
    

    现在,dialog_count的第一个日志显示值为1.但是,当我抬起第二个日志时,显示的值为0.不知怎的,这个值要么重置,要么我的Else语句看不到dialog_count的更新值,因为我在第一个对话框中弹出第二个对话框。

    有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您的代码初始化

int dialog_count = 0;

每次运行。

要保留上次看到的值,请在类中设置dialog_count实例变量。

请注意,您将看到两个事件,一个用于“向下”,一个用于“向上”。

答案 1 :(得分:0)

如果您只想显示一个,那么您需要使用一个标志来检查用户是否已触及,然后如果您不想显示触摸对话框,只需从标志中查看。但Touch Down将始终跟随Touch Up。如果要在用户移动一点时显示对话框,可以使用“触摸移动”方法。

答案 2 :(得分:-1)

如果我理解正确,你要做什么

  1. dialogCount是函数本地(垃圾收集,退出方法后)。因此,每次新方法运行时它都为0。 (将其设为私有类变量)。
  2. 如果您在多个线程中引用dialogCount,则dialogCount必须是线程安全的,因此请使用并发原语 - AtomicInteger