替代bitmapdata.draw的错误

时间:2013-01-31 19:48:46

标签: actionscript-3 flash

我得到了

  

SecurityError:错误#2123:安全沙箱违规:   BitmapData.draw:file:///Users /.../project/bin-debug/Project.swf   无法访问rtmp://flash.project.com/project/。没有政策文件   获准进入。

这就发生在这一行:

temporaryBitmap = new BitmapData(FlexGlobals.topLevelApplication.stage.width, FlexGlobals.topLevelApplication.stage.height, false);
temporaryBitmap.draw(DisplayObject(FlexGlobals.topLevelApplication.stage)); // this line

有没有办法解决这个错误?从我已经完成的研究来看,它似乎与RTMP流权限有关。如果是这样的话那么可以不显示流,因为我只是想找到容器的尺寸。因此,如果有办法获取应用程序的快照,并显示视频流所在的黑盒子,那也很好。

我正在为开发人员创建一个通用工具,因此我不知道提前或不会提供哪些内容。我必须处理这两种情况。我可以想象在加载来自不同域的图像时我将不得不处理这个问题。

1 个答案:

答案 0 :(得分:0)

我找不到任何其他解决方案来判断它是否会出错,所以我将调用包装在try catch块中,如下所示:

try {
    drawBitmapData(temporaryBitmap, DisplayObject(FlexGlobals.topLevelApplication));
}
catch (e:Error) {
    // could not draw so don't draw
}

// continue 

我不得不把调用绘制成一个单独的调用,它不会抛出错误,而是跳到下一段代码:

public function drawBitmapData(bitmapData:BitmapData, displayObject:DisplayObject, matrix:Matrix = null):void {
    bitmapData.draw(displayObject, matrix);
}