【问题标题】:iPad 2 performance issue Adobe AiriPad 2 性能问题 Adob​​e Air
【发布时间】:2014-05-07 23:27:01
【问题描述】:

我正在为 iPad 开发一个在 Flash 上具有高分辨率插图的应用程序。在某些情况下,我需要将这些大图像从屏幕的一侧移动到另一侧(简单的移动动画)。当我在 iPad 4 上运行我的应用程序时,动画很流畅。当我在 iPad 2 上运行相同的应用程序时,图像移动非常困难,并且应用程序非常滞后。

我目前的 Adob​​e Air 选项是: 渲染模式:GPU 分辨率:高 舞台质量:高

有没有办法让这些设置适应不同的 iPad 设备?或者你有什么其他建议吗? 非常感谢!

【问题讨论】:

  • 请出示您的移动图片代码。
  • 你使用什么帧率?对于低分辨率设备上的流畅动画,默认 24fps 通常太低。尝试将其提高到 30、48 和 60,看看它是否有改善(尽管确保测试整个应用程序。帧率越高,每帧渲染的时间越少,丢帧的可能性就越大)
  • 我只是通过计时器移动图像的 x 位置。定时器设置如下: timer = new Timer(1,0);

标签: actionscript-3 ipad air adobe


【解决方案1】:

如果“简单移动动画”是指跨多个帧从一个关键帧移动到另一个关键帧,那么这可能是处理器速度较慢的问题。通过在 ENTER_FRAME 循环中更改它们的“x”或“y”值以编程方式移动图像。然后当图像到达您想要的位置时结束循环。

如果您已经在做这样的事情,请向我们展示您的代码。

【讨论】:

    【解决方案2】:

    有没有办法让这些设置适应不同的 iPad 设备?要么 您还有其他建议吗?

    即使渲染模式设置为 gpu,对显示列表上的大分辨率图像进行转换也是非常昂贵的。我一直在处理这个确切的问题,我得到的最好结果是使用硬件加速库和框架,尤其是 Starling。我建议集成一个基本的八哥设置,并将您的图像添加到QuadBatch,然后您可以翻译 QuadBatch。这将利用 GPU 而不是 CPU,您应该会看到更好的性能。这是一个非常基本的示例:

    首先在包含库之后,设置凝视(通常在你的主类中):

    private var _starling:Starling = new Starling( myClass, stage );
    _starling.start();
    

    这会启动八哥,传递的“myClass”将由八哥实例化。所以在你的 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 时会自动发生)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-28
      • 1970-01-01
      • 2010-09-28
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 2011-09-27
      相关资源
      最近更新 更多