Как обнаружить изменение ориентации в Android с помощью Javascript(Cocos2d-JS)
Я играл с разработчиком мобильных игр, используя Cocos Creator, который построен на основе Cocos2d-JS. Вопрос в том, как мы можем обнаружить изменение ориентации в игровом приложении для Android с помощью Javascript?
Элемент '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, также будут оценены!
Благодарю.
1 ответ
Немного покопавшись в форуме Cocos2d, эта ветка наводит на мысль, что в телефоне пока нет способа обнаружить изменение ориентации. На данный момент можно только заблокировать ориентацию в нативном режиме и программно изменить ориентацию, если это необходимо.