use*_*231 1 air optimization actionscript-3 ios
我几乎完成了我用iOS CS5.5 AIR 3.0制作的游戏.我试图优化代码,因为一些性能问题.
我有点新的编程,只会问一些问题.
我正在使用一个名为"GlobalVariables"的类.我使用它就像有一个"速度",我可以到达任何地方.因此,如果即时通讯在主线上,或在类中我可以键入"GlobalVarialbes.Speed",然后更改速度.这是处理东西的好方法吗?或者是否因为表演而变得沉重?我只是其中许多"全局变量".
一个非常讨厌的事情是,当物体移动时,我真的需要FPS为60 FPS.因为如果FPS大约是30-40,那么物体不会以相同的速度移动,并且物体彼此之间似乎很接近......这真的很烦人.我只是使用object.x + = GlobalVariables.Speed(速度可能是4)......这里有什么建议吗?
如果我使用背景,它实际上需要我很多FPS.大约7-10帧/秒.如何使背景图片减少吃性能?
一般提示可能吗?我在iOS上使用GPU模式:)
编辑请回答:我的朋友告诉我使用"很多"如果是因为,那么事先更容易看到它是否会读取以下代码.:)
通过你一次列出一个.(它至少有4个问题)
我正在使用一个名为"GlobalVariables"的类.我使用它就像有一个"速度",我可以到达任何地方.因此,如果即时通讯在主线上,或在类中我可以键入"GlobalVarialbes.Speed",然后更改速度.这是处理东西的好方法吗?或者是否因为表演而变得沉重?我只是其中许多"全局变量".使用全局变量和函数调用可能需要一些时间.如果在方法中多次使用变量,则可以通过将值缓存到局部变量来略微优化.但是一定要测试结果,因为缓存对象如果它不是原始值会导致调用"new Something()"构造函数,这非常慢.
Run Code Online (Sandbox Code Playgroud)One REALLY annoying thing is that when objects move, I really need the FPS to be 60 FPS. Because if the FPS is around 30-40, the objects doesnt move at the same speed, and the objects seems to be alot closer the each other to... This is really annoying. I just use object.x += GlobalVariables.Speed (Speed is maybe 4)... Any suggestions here?
改变您对速度的思考方式,从每帧像素到每秒像素.然后每秒使用getTimer()来查找自上次渲染帧以来经过的秒数.我在这个帖子中放了一些示例代码:在Flash上跳帧
Run Code Online (Sandbox Code Playgroud)If I use a background it actually takes alot of the FPS from me. Around 7-10 fps. How can I make a background picture less preformance eating?
背景和一般的绘图将是昂贵的操作.如果背景不滚动,请使用cacheAsBitmap.如果可能,请确保背景不包含子图层.使用位图而不是矢量.并保持尽可能小 - 屏幕上没有额外的位.另外 - 确保背景没有缩放.关闭位图平滑也是如此.尝试将舞台质量设置为StageQuality.LOW或StageQuality.Medium,看看是否有帮助.== UPDATE ==现在AIR 3.2已经出来并且它支持iOS和Android上的OpenGL,请使用该功能.它在闪存中称为"stage3D",它实际上是用闪存制作移动图形的唯一好方法.用于2D图形的starling框架.http://gamua.com/starling/它与愤怒的小鸟在Facebook上使用的引擎相同.因此,它的现实世界测试和生产准备就绪.(和它的开源!)
Run Code Online (Sandbox Code Playgroud)General tips maybe? I use the GPU mode on the iOS devies :)
一般提示:使用位图来处理所有事情.尽可能避免透明.不要使用过滤器或混合模式.避免Alpha补间.避免创建新对象 - 回收常用对象,尤其是显示对象.请记住,添加和删除儿童也很昂贵.如果在可重复使用的子弹池中有一堆项目符号,则可以将它们设置为visible = false.然后当您重新初始化该子弹对象时,visible = true.尝试搜索"AS3对象池"
使用Vector代替Array.
最后:测试并重新测试.测量每个函数调用的时间.优化闪存是一个深刻而丰富的主题 - 它永远不会耗尽.部分原因是因为您的里程因项目而异.这是一个很好的链接,可以帮助您开始学习AS3的优化技术http://drawlogic.com/2009/05/22/as3-flash-efficient-code-techniques-vectors-in-flash-10-faster-jpeg -encoding -其他-优化-票据/