我得到了
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流权限有关。如果是这样的话那么可以不显示流,因为我只是想找到容器的尺寸。因此,如果有办法获取应用程序的快照,并显示视频流所在的黑盒子,那也很好。
我正在为开发人员创建一个通用工具,因此我不知道提前或不会提供哪些内容。我必须处理这两种情况。我可以想象在加载来自不同域的图像时我将不得不处理这个问题。
答案 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);
}