首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AIR- Stage3D到bitmapData

AIR- Stage3D到bitmapData
EN

Stack Overflow用户
提问于 2014-03-01 21:14:10
回答 1查看 1K关注 0票数 0

我有一个基于AIR的游戏创建使用Stage3D。我需要捕获Stage3D层的一部分或将其绘制到显示列表上的位图,但由于Stage3D层位于显示列表的后面且完全在显示列表之外,因此不确定如何执行此操作。

EN

回答 1

Stack Overflow用户

发布于 2014-03-02 08:38:47

查看drawToBitmapData()http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display3D/Context3D.html#drawToBitmapData() (在Camera上也有一个),它看起来就是你想要的。

如果你使用Starling,你可以这样做:

阶段:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22114850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档