0
Stage3D를 사용하여 만든 AIR 기반 게임이 있습니다. Stage3D 레이어의 일부를 캡처하거나 표시 목록의 비트 맵으로 그려야하지만 Stage3D 레이어는 표시 목록 밖에 있고 완전히 수행 할 방법이 확실하지 않기 때문에 필요합니다.AIR- Stage3D to bitmapData
Stage3D를 사용하여 만든 AIR 기반 게임이 있습니다. Stage3D 레이어의 일부를 캡처하거나 표시 목록의 비트 맵으로 그려야하지만 Stage3D 레이어는 표시 목록 밖에 있고 완전히 수행 할 방법이 확실하지 않기 때문에 필요합니다.AIR- Stage3D to bitmapData
drawToBitmapData()
: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display3D/Context3D.html#drawToBitmapData() (Camera
에도 하나 있습니다)을 확인하십시오. 원하는 것으로 보입니다.
당신이 찌르레기를 사용하는 경우, 당신은 이런 식으로 작업을 수행 할 수 있습니다
단계 :
public static function takeScreenshot(scl:Number=1.0):BitmapData
{
var stage:Stage= Starling.current.stage;
var width:Number = stage.stageWidth;
var height:Number = stage.stageHeight;
var rs:RenderSupport = new RenderSupport();
rs.clear(stage.color, 1.0);
rs.scaleMatrix(scl, scl);
rs.setOrthographicProjection(0, 0, width, height);
stage.render(rs, 1.0);
rs.finishQuadBatch();
var outBmp:BitmapData = new BitmapData(width*scl, height*scl, true);
Starling.context.drawToBitmapData(outBmp);
return outBmp;
}
으로 DisplayObject :
public static function copyToBitmap(disp:DisplayObject, scl:Number=1.0):BitmapData
{
var rc:Rectangle = new Rectangle();
disp.getBounds(disp, rc);
var stage:Stage= Starling.current.stage;
var rs:RenderSupport = new RenderSupport();
rs.clear();
rs.scaleMatrix(scl, scl);
rs.setOrthographicProjection(0, 0, stage.stageWidth, stage.stageHeight);
rs.translateMatrix(-rc.x, -rc.y); // move to 0,0
disp.render(rs, 1.0);
rs.finishQuadBatch();
var outBmp:BitmapData = new BitmapData(rc.width*scl, rc.height*scl, true);
Starling.context.drawToBitmapData(outBmp);
return outBmp;
}
출처 : http://blog.flexwiz.net/tip-how-to-take-a-screenshot-in-starling/