【问题标题】:How to detect orientation change in Android using Javascript(Cocos2d-JS)如何使用Javascript(Cocos2d-JS)检测Android中的方向变化
【发布时间】:2016-09-29 16:53:47
【问题描述】:

我一直在使用基于 Cocos2d-JS 构建的 Cocos Creator 进行移动游戏开发。问题是,我们如何使用 Javascript 检测 Android 中游戏应用的方向变化?

'window' 和 'document' 元素不可用,并且没有方向更改事件。我尝试使用屏幕大小而不是通过cc.view.getFrameSize() 来检测更改,这应该相当于获取画布大小(视口)。我开始在横向模式下获取{width:2560, height:1440}

但是当我将设备旋转到纵向模式时,cc.view.getFrameSize() 仍然返回给我{width:2560, height:1440}。但是,使用 adb logcat 我可以看到以下事件:

> 09-29 19:24:50.151 3449 3449 V WindowOrientationListener:
> OrientationSensorJudge.onSContextChanged, Rotation: 0 09-29
> 19:24:50.161 3449 3526 V WindowOrientationListener:
> OrientationSensorJudge.getProposedRotation, Rotation: 0 09-29
> 19:24:50.161 3449 3526 V WindowManager:
> rotationForOrientationLw(orient=4, last=1); user=0 sensorRotation=0
> mLidState=-1 mDockMode=0 mHdmiPlugged=false
> mMobileKeyboardEnabled=false displayId=0 09-29 19:24:50.161 3449 3526
> V WindowOrientationListener:
> OrientationSensorJudge.getProposedRotation, Rotation: 0 09-29
> 19:24:50.161 3449 3526 D SamsungWindowManager: setRotationLw() :
> rotation=0 09-29 19:24:50.201 3449 3965 I InputReader: Reconfiguring
> input devices. changes=0x00000004 09-29 19:24:50.201 3449 3965 I
> InputReader: Device reconfigured: id=4, name='sec_touchscreen', **size
> 1440x2560,** orientation 0, mode 1, display id 0

尺寸改为 1440x2560。但是从函数返回的帧没有改变。 :(

关于如何解决这个问题的任何提示?我还没有尝试过 iOS,但是关于如何在 iOS 上进行操作的任何要点也将不胜感激!

谢谢。

【问题讨论】:

  • 'window' 和 'document' 元素不可用 为什么?这是全局元素。
  • @Deep 也许是因为它不是网络视图?

标签: javascript android cocos2d-iphone cocos2d-android cocos2d-js


【解决方案1】:

在 Cocos2d 论坛上搜索了一下之后,this thread 表示目前还没有办法检测到手机中发生的方向变化。目前只能在开始时将方向锁定为原生,并在需要时以编程方式更改方向。

【讨论】:

    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多