影响主题(六):手机平台上的影响

本文探讨了在不同iOS设备上优化HTML5游戏性能的方法,包括使用原生分辨率渲染、减少绘图调用及针对不同设备调整游戏分辨率等技术手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述
尽管影响 iPhone 3GS或第三代的iPod的 4和iPad的无法与之抗衡3GS的速度,因为他们有更多的像素画。 性能-移动平台仍然相当缓慢,但与一些技巧,你可以几乎总是achive的良好的帧速率 分辨率-屏幕尺寸是许多不同的设备。像素比iPhone 4的设备更加复杂事物 的声音-在一个时间只有一个声音可以起到加载声音文件有浏览器的bug。 多点触控的问题-可悲的是,这个IOS 4.2.1推出了错误的地方,有时在第二次触摸浏览器还没有确认。苹果已经意识到了这个问题, 因为它是目前最好的移动设备来播放HTML5的游戏是iPhone 3GS或第三代的iPod Touch。影响,也对其他所有的iOS设备运行良好,但这些都是有点慢。即使是较新的iPhone 4和iPad不能3GS的速度竞争,因为他们有更多的像素画, 我的猜测是,苹果公司拥有完整的硬件加速HTML5的Canvas标签的地方,在他们的路线图,为iOS,因此, iPhone 4和iPad较大的屏幕尺寸将不再重要。它只会变得更快。针对不同的设备 可以使用的影响ig.ua. *属性为特定的设备来检查。可以作为ig.ua作为的主要impact.js文件加载。 例如,有了这个,你可以开始用不同的分辨率,游戏,取决于设备上运行它:
  1. 如果(ig.ua.mobile){
  2.     / /禁用所有移动设备的声音
  3.     ig.Sound.enabled = FALSE;
  4. }

  5. 如果(ig.ua.iPhone4){
  6.     / / 4的iPhone有更多的像素 - 我们将扩展 
  7.     / /游戏的4倍
  8.     ig.main('#'画布,MyGame,60,160,160,4);
  9. }
  10. 否则,如果(ig.ua.mobile){
  11.     / /所有其他移动设备
  12.     ig.main('#'画布,MyGame,60,160,160,2);
  13. }
  14. 其他{
  15.     / /桌面浏览器
  16.     ig.main('#'画布,MyGame,60,240,160,2);
  17. }
复制代码
如果你想为每个设备提供一个不同的HTML文件,你可以这样做一个简单的index.php。这个例子假设你有索引,iphone.html,指数ipad.html和在同一目录指数desktop.html文件。
  1. <?PHP
  2. 如果(preg_match('/ iPhone |机器人/ I',$ _SERVER [' HTTP _USER_AGENT'])){
  3.         (“指数iphone.html'),;
  4. }
  5. 否则,如果(preg_match(“/ ipad公司/我',$ _SERVER [' HTTP _USER_AGENT'])){
  6.         (“指数ipad.html'),;
  7. }
  8. 其他{
  9.         (“指数desktop.html”),;
  10. }
  11. ?>
复制代码
始终呈现原住民决议,
如果你的画布上的一个像素并没有直接对应到1设备的屏幕像素到可以通过浏览器扩展被显示之前,整个画布-这极其缓慢。大多数手机浏览器支持的视口的元标签。有了这个标签,你可以锁定你的页面的缩放级别1,即没有放大。

  1. <meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1; user-scalable=0;"/>
复制代码
这已经保证,在画布呈现在其本土的决议。 当然也有一个例外:iPhone 4和第4。代iPod Touch实际上扩大了2倍,如果你指定一个缩放1。他们的显示器有这么多的一切,这是正常大小的一个像素将缩减对这些设备的两次出现在相同的大小,每英寸点。即他们有设备像素比为2。 如果我们为iPhone 4增加帆布两次通过ig.main()函数,它将会显示更大的比我们想的仍不会呈现在其本土的决议。实际上,我们现在有一些CSS扩展Canvas的显示大小(Canvas的内部决议)下来再 例如与游戏的原始分辨率160x160px,你将有以下呼吁ig.main():
  1. 如果(ig.ua.iPhone4){
  2.     / /游戏的原始分辨率是160X160。这将是
  3.     / /缩放高达4倍的iPhone4,在绘图 
  4.     / /分辨率640x640像素
  5.     ig.main('#'画布,MyGame,60,160,160,4);
  6. }
  7. 其他{
  8.     / /对于所有其他设备(包括桌面浏览器)
  9.     / /游戏将扩大2倍,在绘图
  10.     / /分辨率320x320像素
  11.     ig.main('#'画布,MyGame,60,160,160,2);
  12. }
复制代码
和下面的CSS:
  1. #帆布{
  2.         / *请记住,那些320“PX”将超过640像素,显示
  3.         iPhone 4的屏幕上,这就是为什么我们要渲染
  4.         在640x640像素的比赛。* /

  5.         宽度:320px来电;
  6.         高度:320px来电;
  7. }
复制代码
下面是一个完整的HTML文件,所有iOS设备上运作良好。这实质上是Biolab公司灾害的HTML。它还定义了四个按钮,可以绑定游戏动作通过。ig.input.bindTouch()。您可以下载这些按钮在这里使用的图像文件。
  1. <!DOCTYPE HTML>
  2. <HTML>
  3. <HEAD>
  4.         <TITLE>影响游戏</ TITLE>
  5.         <style type="text/css">
  6.                 HTML,身体{
  7.                         背景颜色:#000;
  8.                         保证金:0;
  9.                         填充:0;
  10.                         最小高度:416px;
  11.                         位置:亲属;
  12.                 }
  13.                 #帆布{
  14.                         宽度:320px来电;
  15.                         高度:320px来电;
  16.                 }
  17.                 。按钮{
  18.                         背景图像:URL(媒体/ iPhone的buttons.png),;
  19.                         背景重复:不重复;
  20.                         宽度:80px的;
  21.                         高度:96px;
  22.                         位置:绝对;
  23.                         底部:0px;
  24.                         WebKit的触摸标注:无;
  25.                         WebKit的用户选择:无;
  26.                         WebKit的自来水高亮颜色:RGBA(0,0,0,0);
  27.                         WebKit的文字大小调整:无;
  28.                 }
  29.                 ,#buttonLeft {左:0;背景的位置:0,0;}
  30.                 #buttonRight {左:80px的背景位置:80px的,0;}
  31.                 #buttonShoot {右:80px的背景位置:160px【0;}
  32.                 #buttonJump {利用右:0px;背景位置:240px 0;}
  33.         </ STYLE>
  34.         <meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1; user-scalable=0;"/>
  35.         < - 这个元标记,确保访问此页时弗罗姆主屏幕,在浏览器底部的工具栏被隐藏。 - >
  36.         <meta name="apple-mobile-web-app-capable" content="yes"
  37.         <! - 添加到主屏幕时,应使用的图标 - >
  38.         <link rel="apple-touch-icon" href="media/touch-icon.png"/>
  39.         <script type="text/javascript" src="lib/impact/impact.js"> </ SCRIPT>
  40.         <script type="text/javascript" src="lib/game/game.js"> </ SCRIPT>
  41. </ HEAD>
  42. < - 这将滚动口中,使导航栏不再可见 - >
  43. <BODY>
  44.         <div id="game">
  45.                 <canvas id="canvas"> </画布>
  46.                 <div class="button" id="buttonLeft"> </ DIV>
  47.                 <div class="button" id="buttonRight"> </ DIV>
  48.                 <div class="button" id="buttonShoot"> </ DIV>
  49.                 <div class="button" id="buttonJump"> </ DIV>
  50.         </ DIV>
  51. </ BODY>
  52. </ HTML>
复制代码
您还可以使用另一种元标记指定如何iPhone的状态栏应显示:
  1. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"
复制代码
尽可能少使用绘图调用
每个绘制调用具有显着的性能影响。您应该限制您的平局,以尽可能少的呼叫。如果你曾经与OpenGL或Direct3D工作,这不会给你一个惊喜。 平局电话基本上是任何绘制任何的Canvas API的调用。的影响,这些调用的API完成通过ig.Image的。drawTile()方法。它是用来无处不在:动画,用它来 ​​绘制当前动画帧和​​BackgroundMaps使用它从他们的地形设置的地图绘制每个瓷砖, 因为BackgroundMaps,默认情况下,需要一个绘制调用每一个被显示的瓷砖,他们很容易最大的性能生猪。 幸运BackgroundMaps与预渲染成大块的地图一个特殊的模式来。这样的发动机只需要提供一个或两个块,而不是几百砖,每一帧。 您可以启用此模式,在任何时间通过。的PreRender财产(通常加载的水平后右)。例如:
  1. / /在您ig.Game子类
  2. loadLevel:功能(水平){
  3.     this.parent(水平);
  4.     / /允许所有的预渲染背景模式 
  5.     / /移动设备
  6.     如果(ig.ua.mobile){
  7.         (I = 0;我<this.backgroundMaps.length; I + +){
  8.             this.backgroundMaps [我]的PreRender = TRUE;
  9.         }
  10.     }
  11. }
复制代码
Biolab公司灾难中的敌人BLOB的杀()方法扩展功能什么这样做的:
  1. 杀:(){
  2.     / /在手机平台上限制镶的数量
  3.     VAR镶= ig.ua.mobile?5:30;
  4.     (I = 0;我<镶; I + +){
  5.         ig.game.spawnEntity(EntityBlobGib,this.pos.x,this.pos.y);
  6.     }
  7.     this.parent();
  8. },
复制代码

声音


截至目前,所有手机平台都在努力发挥的HTML5的音频功能。在的iOS ig.Sound.enabled属性全局禁用声音。

  1. / /对手机设备禁用所有声音
  2. 如果(ig.ua.mobile){
  3.     ig.Sound.enabled = FALSE;
  4. }
  5. / /开始游戏
  6. ig.main(...)
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值