Android Shake Code

时间:2012-08-15 12:06:53

标签: java android accelerometer shake

在我的游戏中,我希望玩家在游戏过程中随时摇动手机,每次震动都会导致切换武器。

示例:玩家有刀,[摇动手机]并切换到武士刀。

if (accelerometer.x >= 5 || accelerometer.x <= -5   || accelerometer.y >= 5 
   || accelerometer.y <= -5   || accelerometer.z >= 5 || accelerometer.z <= -5 )
   switchWep();        

这有效,问题是它有副作用。当玩家摇动手机时,它有时会切换两次武器。所以我想限制它,以便如果有一个大的震动,游戏不会从武器0切换到武器2。

请帮忙。

2 个答案:

答案 0 :(得分:3)

您可以设置一个简单的时间限制,这样您就无法相互切换2次。我认为1秒-500毫秒就足以避免双重开关。

修改: 你可以做到这一点,但我不确定它是最优化或锁定安全的方法。

protected void shake() {
    if(mAllowShake) {
        mAllowShake = false;

        // do shake

        Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                mAllowShake = true;
            }
        };

        handler.sendMessageDelayed(null, 500);  // time in milliseconds
    }
}

答案 1 :(得分:0)

您可以尝试将.5更改为更高的数字。