我制作了一个简单的游戏,其中正方形收集晶体并将它们带到基座并复制。它们只是旋转和移动的.png图像,但当它们的数量大于500时,游戏开始出现滞后。在Java中,我能够用30,000个单位做类似的事情。我可能做错了什么或Flash是不是那么有能力?
我正在使用Flash Builder。 我得到这样的图像:
[Embed(source="../lib/red.png")]
public var redImgClass:Class;
public var redImg = new redImgClass();
然后我将redImg传递给"单位"采用" Bitmap"的实例的类 我改变了"旋转"和每个框架的x,y成员。
我在这里做错了吗?
答案 0 :(得分:2)
你没有使用Stage3D。如果您使用Starling,ND2D或编写自己的Stage3D包装器,您将能够获得更好的性能。
您还可以查看Jackson Dunstan的博客,这篇文章特别有帮助:http://jacksondunstan.com/articles/2279
答案 1 :(得分:1)
Daniel的回答是正确的,因为您应该使用Stage3D API来获得更好的性能。但他没有提到你应该认真考虑使用Starling,它使用更容易使用的类包装Stage3D API:
答案 2 :(得分:1)
另一个可能的答案是使用blitting,即使用单个Bitmap
对象通过copyPixels()
绘制所有内容。这需要将旋转的晶体PNG复制到一系列旋转图像中,然后使用这些图像而不是直接更改rotation
属性。这种方法更加性能友好,并且不依赖于Stage3D那样的显卡性能。
答案 3 :(得分:0)
Starling是您正在寻找的(http://gamua.com/starling/)