【问题标题】:How to reset Accelerometer Event As3如何重置加速度计事件 As3
【发布时间】:2015-03-13 13:06:58
【问题描述】:

在我的项目中,游戏开始时加速度计事件工作正常。当游戏到达游戏结束页面并单击重新启动按钮。重新启动整个游戏时,所有对象都正常工作,所有值都已重置,但加速度计无法正常工作。

提前致谢。

代码如下:

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

【问题讨论】:

  • 这需要代码,尤其是设置和处理加速度计事件。您可能没有在事件上设置侦听器并以某种方式使前一个事件无效。另外,请不要针对相同的问题和相同的内容发布新问题,而是编辑您的旧问题,这将导致它被视为新问题。
  • 我已经为加速度计事件输入了下面的代码。请检查一下。
  • 您应该已经编辑了问题(问题文本和标签下方有一个“编辑”链接,请使用该链接)。我将代码移到了你的问题中。
  • 此代码显然位于某个框架上。请检查acc 是什么,在您执行游戏重启例程之前和之后是否定义了它。您可能需要将加速度计初始化代码从游戏重新启动代码移开,因此在重新启动游戏时不会调用acc=new Accelerometer(),因此您可以在多个游戏会话期间使用acc 的一个实例。跨度>
  • acc 在游戏开始时在文档类中定义。我的加速度计事件在自定义类中,不在重启代码中。我在重启游戏加速度计更新功能时遇到的问题不起作用。

标签: actionscript-3


【解决方案1】:

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

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 存在一些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2014-12-10
    • 1970-01-01
    • 2011-05-08
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多