2

私は

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ストリームのアクセス許可に関連しているようです。その場合は、コンテナのサイズを検索するだけなので、ストリームを表示しなくてもかまいません。したがって、アプリケーションのスナップショットを取得し、ビデオストリームがある場所にブラックボックスを表示する方法があれば、それも問題ありません。

私は開発者向けの汎用ツールを作成しているので、どのコンテンツが利用可能になるか、または利用できないかは事前にわかりません。私は両方の状況に対処する必要があります。異なるドメインから画像をロードする場合にも、この問題に対処する必要があると想像できます。

4

1 に答える 1

0

エラーが発生するかどうかを判断する他の解決策が見つからなかったため、呼び出しを次のように try catch ブロックでラップしました。

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

// continue 

エラーをスローせずにコードの次のセクションにスキップするには、 draw の呼び出しを別の呼び出しに入れる必要がありました。

public function drawBitmapData(bitmapData:BitmapData, displayObject:DisplayObject, matrix:Matrix = null):void {
    bitmapData.draw(displayObject, matrix);
}
于 2013-02-01T16:09:20.657 に答える