我正在为iPad上的Flash开发一个具有高分辨率插图的应用程序。在某些情况下,我需要将这些大图像从屏幕的一侧移动到另一侧(简单移动动画)。当我在iPad 4上运行我的应用程序时,动画很流畅。当我在iPad 2上运行相同的应用程序时,图像移动非常困难,应用程序非常滞后。
我目前的Adobe Air选项包括: 渲染模式:GPU 分辨率:高 舞台质量:高
有没有办法让这些设置适应不同的iPad设备?或者您还有其他建议吗? 非常感谢!
答案 0 :(得分:0)
如果通过“简单移动动画”,你的意思是在很多帧中从关键帧移动到关键帧,这可能是你的处理器速度较慢的问题。通过在ENTER_FRAME循环中更改其“x”或“y”值以编程方式移动图像。然后在图像到达您想要的位置时结束循环。
如果您已经在做这样的事情,请告诉我们您的代码。
答案 1 :(得分:0)
有没有办法让这些设置适应不同的iPad设备?要么 你有其他建议吗?
即使渲染模式设置为gpu,显示列表上的大分辨率图像的转换也非常昂贵。我经常处理这个问题,而且我所获得的最佳结果是硬件加速库和框架,特别是Starling。我建议集成一个基本的starling设置,并将图像添加到QuadBatch
,然后你可以翻译QuadBatch。这将利用GPU而不是CPU,您应该看到更好的性能。这是一个非常基本的例子:
首先包括库,设置凝视(通常在你的主类):
private var _starling:Starling = new Starling( myClass, stage );
_starling.start();
这将推出starling,通过" myClass"将由starling实例化。所以在你的myClass中你会做这样的事情:
//class level variable of type QuadBatch
private var _quadBatch:QuadBatch;
public function myClass() {
//add event listener for added to stage
addEventListener( Event.ADDED_TO_STAGE, onAdded );
}
private function onAdded( e:Event ):void {
removeEventListener( Event.ADDED_TO_STAGE, onAdded );
_quadBatch = new QuadBatch();
addChild( _quadBatch ); //add quadbatch to the stage3d display list
addImageToQuad();
}
private function addImageToQuad():void {
//first you create a starling texture from your bitmap
var texture:Texture = Texture.fromBitmap( myBitmapImage );
//add it to the quad as a starling Image type
var image:Image = new Image( texture );
_quadBatch.addImage( image );
}
此时,您可以像使用任何其他显示对象一样使用_quadBatch
进行所有正常翻译,并且它应该执行得更顺畅。这是一个非常基本的实现,但如果您正在使用高分辨率图像,我强烈建议您尝试这一点,因为使用默认显示列表渲染您将无法获得更好的性能。最后,您将renderMode设置为" direct" (尽管我相信无论如何都会在使用Starling / Stage3D时自动发生这种情况。)