実際、これは限られた場合のサブセットで可能です(しかし、私が必要としたものです!)。次のコードは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コンテキストで表示されているすべてのオブジェクトをresult
BitmapDataにレンダリングします。次に、スプライトがある場所でそのBitmapDataからピクセルを取得します。
これは完全ではありません。回転やスケールなどは考慮されません。また、sprite
深さが最も高くないかどうかも考慮されません。ただし、テストには役立ちます。また、アプリ/ゲームの現在の状態のスクリーンショットを撮る必要がある場合にも役立つことがあります。