MoSync 3.3.1,横向屏幕方向导致崩溃

Posted

技术标签:

【中文标题】MoSync 3.3.1,横向屏幕方向导致崩溃【英文标题】:MoSync 3.3.1, landscape screen orientation causing crashing 【发布时间】:2013-07-31 09:56:35 【问题描述】:

我在 Mosync 3.3.1 上使用 OpenGL ES 2.0 创建一个应用程序,理想情况下我希望屏幕旋转到屏幕倾斜的任何方向。但是,使用 maScreenSetSupportedOrientations() 并将其设置为动态或横向会导致应用程序在尝试旋转到横向时崩溃。这是一个需要修复的错误还是我做错了什么?我将我的代码发送到 nexus 7 平板电脑。

我在我的代码的 init 函数中发起调用:

maScreenSetSupportedOrientations(MA_SCREEN_ORIENTATION_DYNAMIC);
maScreenSetOrientation(MA_SCREEN_ORIENTATION_LANDSCAPE);

我的整个代码都可以在这里找到:http://codetidy.com/6378/

【问题讨论】:

maScreenSetSupportedOrientations() 函数启用了可能的方向,实际的动态是用 maScreenSetOrientation() 调用的,您能否发布部分这样做的代码? MoSync 文档说 maScreenSetOrientation() 已被弃用,改为使用 maScreenSetSupportedOrientaions()。无论如何我尝试添加它,但它仍然没有帮助。我现在更新了问题以显示错误的代码行并添加了指向我的完整代码的链接。 恐怕你将不得不调试更多(评论部分,看看它是否适用),我个人认为它与opengl绘图有关,它不应该. 【参考方案1】:

对我有用

extern "C" int MAMain()  // Declare MAMain function as "C"
maScreenSetSupportedOrientations(MA_SCREEN_ORIENTATION_LANDSCAPE);
Moblet::run(new MyGLMoblet());
return 0;

而不是

void init()  // Screen Size

    mWidth = EXTENT_X(maGetScrSize());
    mHeight = EXTENT_Y(maGetScrSize());

    maScreenSetSupportedOrientations(MA_SCREEN_ORIENTATION_PORTRAIT|MA_SCREEN_ORIENTATION_LANDSCAPE);
    maScreenSetOrientation(MA_SCREEN_ORIENTATION_LANDSCAPE);

【讨论】:

以上是关于MoSync 3.3.1,横向屏幕方向导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS 方向在特定屏幕上支持横向和纵向 - 不是所有屏幕

Printf 擦除屏幕(使用 MoSync 库)

Android 屏幕方向:横向回到纵向

iOS 应用程序初始屏幕方向不适用于横向

Android中的屏幕方向,横向

当方向是横向xcode时如何使屏幕可滚动