首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PlayN iOS景观模式

PlayN iOS景观模式
EN

Stack Overflow用户
提问于 2012-10-15 09:35:39
回答 2查看 335关注 0票数 2

我的游戏是专为景观设计的(屏幕分辨率1024*768 - iPad分辨率)。

我的游戏场景被正确地呈现在PlayN支持的每个平台上(Android,html等)。只有iOS的问题。

我已经准备好了iPad屏幕分辨率、安装info.plist文件、使用IOSPlatform.register(app, IOSPlatform.SupportedOrients.LANDSCAPES);注册平台的所有资源。

当我运行我的应用程序时,关于设备定向的所有内容都是正确的,但是游戏场景并没有完全呈现出来。它是为分辨率768*768而呈现的(并非所有场景对象都是可见的,只有属于768*768 rect的对象是可见的),其余的屏幕空间是黑色的。

我以以下方式对这个问题进行了调查:

  1. 将缩放转换应用到rootLayer (以确保整个场景被呈现)。PlayN.graphics().rootLayer().setScale(0.75f, 0.75f);结果-游戏场景适用于768*768,我可以看到所有的游戏场景对象。
  2. 将转换应用到rootLayer (以确保PlayN不会在768*768 rect之外呈现场景)。PlayN.graphics ().rootLayer().setTranslation(1024.0f - 768.0f, 0.0f);结果-游戏场景被翻译,但是不属于768*768屏幕的物体是不可见的。

我的猜测是,PlayN为768*1024屏幕分辨率(默认的iPad定向分辨率)准备了它的绘图上下文。当它呈现屏幕时,位于768*1024矩形之外的对象被裁剪(未呈现)。

任何能导致这种奇怪行为的帮助或想法都将是非常感谢的。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-10-22 09:51:08

问题在以下方面:

  • iOS在设备旋转后不会改变主窗口框架和根视图框架(而Android则这样做--我已经检查过)。
  • PlayN代码期望旋转后的视图大小从768*1024 (默认方向)更改为1024*768。

实际结果: PlayN使用变换矩阵变换游戏场景,但不改变OpenGL帧缓冲区大小(帧缓冲区大小仍为768*1024)

我通过向IOSGLContext添加下一段代码来解决这个问题

代码语言:javascript
复制
@Override
public void setSize (int width, int height)
{
    if (UIDeviceOrientation.LandscapeLeft == orient || UIDeviceOrientation.LandscapeRight == orient)
    {
        Console.WriteLine("Swap IOSGLContext width and height for " + UIDeviceOrientation.wrap(orient));
        viewWidth = height;
        viewHeight = width;
    }
    else
    {
        viewWidth = width;
        viewHeight = height;
    }
    super.setSize(viewWidth, viewHeight);
}

现在一切都如期而至!

如果你有其他的想法如何解决这个问题,我很乐意讨论它们)

谢谢!

票数 1
EN

Stack Overflow用户

发布于 2012-10-23 18:51:20

下载最新的PlayN-1.5快照(从-> https://github.com/threerings/playn,而不是从google代码)。这个问题在那个版本中是固定的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12892889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档