如何重置Accelerometer事件As3

时间:2014-12-17 10:50:43

标签: actionscript-3

在我的项目中,游戏开始时加速度计事件正常。当游戏通过页面到达游戏并点击重启按钮时。重新启动整个游戏时所有对象都运行良好,所有值都已重置但加速度计不起作用。

先谢谢。

代码如下:

if (Accelerometer.isSupported)
{ 
    acc = new Accelerometer();
    acc.addEventListener(AccelerometerEvent.UPDATE,updateFn);
}
public function updateFn(e:AccelerometerEvent):void 
{ 
    targetX = e.accelerationX * 9.8; 
}

1 个答案:

答案 0 :(得分:0)

只需在应用程序启动/激活后注册加速器,并将其值保存到每个加速器更新的全局变量上,并在每次将应用程序置于后台/停用/退出时将其禁用。例如:

NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleApplicationDeactivated);
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, handleApplicationActivated);

function handleApplicationActivated( e:Event):void {

   // Check if Accelerometer is already activated 
   if( acc != null ) return; 

   acc = new Accelerometer();
   acc.addEventListener(AccelerometerEvent.UPDATE,update);
}
function update( e:AccelerometerEvent ):void {
  GlobalVars.accX = e.accelerationX;
  GlobalVars.accY = e.accelerationY;
  GlobalVars.accZ = e.accelerationZ;
}
function handleApplicationDeactivated( e:Event):void {
   acc.removeEventListener(AccelerometerEvent.UPDATE,update);
   acc = null;
}

编辑:您可能希望使用此激活/停用代码:NativeApplication DEACTIVATE-ACTIVATE app when in the background,因为NativeApplication存在一些问题。