1

従来の表示階層を使用して AS3 で記述した画像読み込みコードをテストするには、ピクセルの色が正しい値であることを確認します。

そのコードを Starling に移植し始めたところ、Textureピクセル値を取得する簡単な方法がないことに気付きました。これは残念なことです。なぜなら、それは私が多くの優れたテストを投げ出さなければならないことを意味するからです。

これを行う方法はありますか?どうにかして aTextureをに変換できますか? BitmapDataまたは、画像が正しく読み込まれたことを確認するためのテスト方法について、他に何か提案はありますか?

4

1 に答える 1

2

実際、これは限られた場合のサブセットで可能です(しかし、私が必要としたものです!)。次のコードはHaxeですが、AS3のバックグラウンドを持っている人なら誰でも、最小限の難しさで翻訳できるはずです。

public function getPixel(x:Int, y:Int, sprite: Starling.display.Sprite) : UInt {
    var sw: Int = stage.stageWidth;
    var sh: Int = stage.stageHeight;

    var support:RenderSupport = new RenderSupport();
    RenderSupport.clear(flash.Lib.current.stage.color, 1.0);
    support.setOrthographicProjection(0, 0, sw, sh);
    Fathom.starling.stage.render(support, 1.0);
    support.finishQuadBatch();

    var result:BitmapData = new BitmapData(sw, sh, true);
    Starling.context.drawToBitmapData(result);

    return result.getPixel(Std.int(sprite.x) + x, Std.int(sprite.y) + y);
}

このコードは、3Dコンテキストで表示されているすべてのオブジェクトをresultBitmapDataにレンダリングします。次に、スプ​​ライトがある場所でそのBitmapDataからピクセルを取得します。

これは完全ではありません。回転やスケールなどは考慮されません。また、sprite深さが最も高くないかどうかも考慮されません。ただし、テストには役立ちます。また、アプリ/ゲームの現在の状態のスクリーンショットを撮る必要がある場合にも役立つことがあります。

于 2013-01-01T02:49:05.217 に答える