外部ビットマップ ファイルを塗りつぶしとして使用する関数を呼び出す前に、 Loader クラスを使用してビットマップ ファイルを Flash Player にロードし、ローダーがロードを終了して起動し、対応するイベント ハンドラを実行するのaddNodeFilled()
を待つ必要があります。これを確実にするために、ロードの完了を待つ while ループがありますが、プログラム esp を実行すると、ループが無限に続きます。つまり、フラッシュでは、イベント ハンドラーがメイン シーケンスと同期して実行され、終了するまで実行できません。 . 通常、コードはイベント ハンドラー内に配置されますが、それを行うことができず、いつでも呼び出す必要がありますが、ロードの完了を確認する必要があります。どうすればよいですか?Event.COMPLETE
onComplete()
addNodeFilled()
addNodeFilled()
addNodeFilled()
onComplete
addNodeFilled()
var stitch:BitmapData = new BitmapData(16, 16);
var loaderStatus:String = "busy";
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest("file:///E:/Projects/FlashDevelop/Terracotta/assets/Stripe.jpg"));
addNodeFilled(100, 100);
//function definitions===============================================
function onComplete(event:Event):void
{
stitch = event.target.content.bitmapData;
loaderStatus = "loaded";
} //onComplete
function addNodeFilled(posx:Number, posy:Number):void
{
while(loaderStatus != "loaded")
{
trace("waiting for loader");
}
var grid:Rectangle = new Rectangle(5, 5, 5, 5);
var nodeDecal:Sprite = new Sprite();
nodeDecal.graphics.beginBitmapFill(stitch, null, true, true);
nodeDecal.graphics.drawRoundRectComplex(posx, posy, 80, 16, 0, 0, 4, 4);
nodeDecal.scale9Grid = grid;
addChild(nodeDecal);
} //addNodeFilled