在用Java为Android创建了一些游戏后,我正在用appMobi制作我的第一个游戏。我基本上打算创建一款无尽奔跑者街机游戏,2d,俯视图。
我使用的是带有普通JS和CSS3的appMobi(没有任何其他库,如Impact)。
我首先用画布做了一些测试,并创建了一个非常简单的演示,在这个演示中,你可以用加速度计控制一个球(基本上是用画布渲染的一个圆圈),并需要收集其他球。我用我的Galaxy S2和iPhone 4测试了它,看起来iPhone运行得更好,所以我开始编写一个简单的引擎来使用dom元素。我基本上创建了一个连接到标签的对象,并保存了一个位置向量,还添加了一个draw函数,该函数基本上可以执行以下操作:this.element.style.left=x+'px'(top和y也是如此)。
在我的主循环中,我调用了对象上的draw函数,并根据我的游戏逻辑更新了它们的位置,并使用这个窗口重新调用了mainLoop。requestAnimationFrame包装器:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
然后我继续创建一个相机对象来控制屏幕定位,并使用css背景位置属性成功地滚动背景。我已经用我的新Galaxy s3和带有一些图形的s2进行了测试(2个200x200 pngs和背景),一切都以大约60 fps的速度流畅运行。我对结果很满意,在iPhone 4 iOS 4.x上测试真的很兴奋,但令我失望的是,它以2-3 FPS的速度运行!比我的安卓系统慢30倍。我开始做很多更改(目前我使用的是720x1280的视口),所以我尝试使用320*480,使用画布,删除滚动背景,调整图像大小,但都无济于事,而android在所有变体上都表现良好。
我得到的最好成绩是5 FPS。我有另一部iPhone要测试,一部带有iOS5的iPhone 4S,FPS非常不稳定。范围从3-50,但是不可打的-没有机会任何人会玩它,我甚至还没有开始包装它的内容。
我真的很想利用跨平台的优势,如果我放弃苹果市场,那将是一种耻辱,所以任何提示或建议都会受到热烈欢迎!
谢谢,Gabriel
这是我在appMobi论坛上得到的答案,如果有人有这个问题的话:
使用直接画布
无论怎样,JS/CS3在每台设备上都会表现得很糟糕。这个iOS(Safari)中的股票浏览器已启用NitroJS,但在UIWebView。。。但如果你有时间,读一读,你会发现你如果不使用硬件加速,就无法编写JS游戏直接画布。
在这里找到一些示例和链接,开始使用directCanvas:
http://www.appmobi.com/documentation/index.php?DOC=DIRECTCANVAS_SDK