使用HTML和JS的iPhone游戏中的性能问题,以及appMobi

时间:2012-08-25 09:46:07

标签: javascript iphone html canvas appmobi

在使用Java创建Android游戏之后,我正在使用appMobi制作我的第一款游戏。 我基本上打算创建一个无尽的亚军街机游戏,2d,顶视图。

我正在使用appMobi和普通的JS和CSS3(没有任何其他库,如Impact)。

我开始使用画布进行一些测试并创建了一个非常简单的演示,您可以使用加速度计控制球(基本上是使用画布渲染的圆圈)并需要收集其他球。我用我的Galaxy S2和iPhone 4进行了测试,看起来iPhone运行起来要好得多,所以我开始编写一个简单的引擎来代替使用dom元素。 我基本上创建了一个连接到标签的对象,并保存了一个位置向量,还添加了一个基本上执行以下操作的绘制函数:this.element.style.left = x +'px'(顶部和y相同)。

在我的主循环上,我在对象上调用了draw函数,并根据我的游戏逻辑更新了它们的位置,并使用这个window.requestAnimationFrame包装器重新调用了mainLoop:

window.requestAnimFrame = (function(){
       return  window.requestAnimationFrame       || 
              window.webkitRequestAnimationFrame || 
              window.mozRequestAnimationFrame    || 
              window.oRequestAnimationFrame      || 
              window.msRequestAnimationFrame     || 
              function( callback ){
                window.setTimeout(callback, 1000 / 60);
              };
    })();

然后我继续创建一个相机对象来控制屏幕定位,并使用css background-position属性成功滚动背景。 我用新的Galaxy s3测试了它,并在s2上测试了一些图形(2 200x200 pngs和背景),所有内容都以~60 fps的速度运行。 我对结果非常满意,并且非常高兴能够在iPhone 4 iOS 4.x上进行测试,但令我失望的是它以2-3 FPS运行!比我的机器人慢30倍。 我开始做了很多改变(目前我正在使用720x1280的视口)所以我尝试使用320 * 480,使用画布代替,删除滚动背景,调整图像大小,但无济于事,而android表现良好所有变化。

我得到的最好是5 FPS。我有另外一部iPhone要测试,iPhone 4S和iOS5,并且非常不稳定的FPS。范围从3到50但是无法播放 - 任何人都没有机会玩它,我甚至没有开始用内容打包它。

我真的想利用跨平台优势,放弃Apple市场会让我感到羞耻,所以任何提示或建议都会受到热烈欢迎!

谢谢, 加布里埃尔

2 个答案:

答案 0 :(得分:1)

这是我在appMobi论坛上得到的答案,如果有人有这个问题:

  

使用Direct Canvas

     

JS / CSS3无论如何都会在每台设备上表现糟糕。该   iOS(Safari)中的库存浏览器启用了NitroJS,但没有启用   UIWebView ...但如果你有时间,请阅读,你会看到你   如果不加入硬件加速就不能编写JS游戏   直接画布。

答案 1 :(得分:0)

在此处找到一些示例和链接,以便开始使用directCanvas:

http://www.appmobi.com/documentation/index.php?DOC=DIRECTCANVAS_SDK