【问题标题】:from plain as3 to Starling?从普通的 as3 到 Starling?
【发布时间】:2014-06-14 21:51:47
【问题描述】:

我有一个简单的 as3 代码块,它从 MC 复制像素并使用它们显示在几个对象上(就像一个现场拼图,哪个部分在舞台上)。然而,从我读过的和聚集在一起,如果我想让性能达到最大值,我应该使用 Starling。但!从帖子中我发现,如果 RenderTexture (.draw) 真的是一个更好的解决方案,我不太明白。

而且由于代码相当简单(而且我对 Starling 很陌生),我能问一下它(下面的代码)是如何翻译成 Starling 的吗?

private var movingPicture:MovieClip =  new RollerCoaster();
private var _sourceBitmapData:BitmapData = new BitmapData(500, 500);
private var elements:Array = [];

private function onFrame( ev:Event )
{
    _sourceBitmapData.lock();
    _sourceBitmapData.draw( movingPicture );

    for(var r:int = 0; r < row; r++)
    {
        for(var c:int = 0; c < col; c++)
        {
            elements[r][c].bmd.copyPixels(_sourceBitmapData, new Rectangle( (c * elementW ), ( r * elementH ), elementW, elementH), myPoint);
        }
    }
    _sourceBitmapData.unlock();
}

//elements[r][c] is a  MovieClip and it has some vars in, that can be used, like :
//public var bmd:BitmapData;
//public var bm:Bitmap;

//PS: I never add **movingPicture** to the stage, I just use it to copy from it

【问题讨论】:

    标签: actionscript-3 optimization starling-framework


    【解决方案1】:

    使用 Starling,您将无法以如此简单的方式操纵这些纹理。为了做到这一点,您将花费大量的学习时间。此外,您必须以全新的方式考虑您的图形。纹理在开始时被“烘焙”并上传到 GPU,之后几乎无法进行任何修改(即替换纹理)。您将需要使用着色器和类似的东西。

    根据您的需要,性能再好不过了。如果您需要经常更改图形(这意味着要重新上传到 GPU),这甚至可能是一个缺点。

    根据我的经验,学习曲线非常艰难,因此如果您只需要一些简单的操作,我建议您坚持使用常规 AS。您还应该知道复制像素非常快,如果您离开它也不会为您节省太多时间。到那时 - 渲染新纹理(将其上传到 GPU)非常慢。例如,在三星 S3 上,我的应用需要在 500 到 800 毫秒之间上传一个常规的 800x600 纹理。

    因此,没有“最佳”方式取决于您的需求、代码和设备。祝你好运!

    【讨论】:

    • 非常感谢您提供的信息仅适用于一个 MC ..... 我喜欢 5-6 )。但是你的信息真的很有帮助
    猜你喜欢
    • 2012-12-03
    • 2012-07-22
    • 2012-12-17
    • 2014-12-15
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2014-07-06
    • 2015-10-14
    相关资源
    最近更新 更多