cocos2d-x android加速度监听导致崩溃问题

在Cocos2d-x游戏开发中,为实现手机摇一摇功能,作者通过监听加速度变化触发Lua回调。然而,此方法在Android上导致应用崩溃,而iOS和Win32平台运行正常。问题出在Android的多线程调用,解决方案是确保加速度变化的回调在C++主线程中执行,避免内存错误。通过对Cocos2dxAccelerometer.java的onSensorChanged函数进行修改,确保在正确线程中处理传感器数据,解决了Android平台上的崩溃问题。
摘要由CSDN通过智能技术生成

          因为需要用到手机摇一摇的功能,所以需要监听加速度变化,并把变化传到上层(LUA)。在CCLayer添加LUA回调函数,在didAccelerate里面调用CCScriptEngineManager,调用LUA注册函数。问题出现,在win32和IOS上运作正常,在android上回调一会就会崩溃,如果不回调LUA HANDLER则

没问题,应该是android的某些问题导致lua内存错误。

         解决方法:修改Cocos2dxAccelerometer.java里面的onSensorChanged函数,修改回调C++部分,

@Override
 public void onSensorChanged(final SensorEvent pSensorEvent) {
  if (pSensorEvent.sensor.getType() != Sensor.TYPE_ACCELEROMETER) {
   return;
  }

  float x = pSensorEvent.values[0];
  float y = pSensorEvent.values[1];
  final float z = pSensorEvent.values[2];

  /*
   * Because the axes are not swapped when the device's screen orientation
   * changes. So we should swap it here. In tablets such as Motorola Xoom,
   * the default orientation is landscape, so should consider this.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值