2009-03-13 7 views
1

Loader()を拡張していますが、ハックをかけずにコンテンツの周りに枠線を描くことは可能ですか?私はローダーが追加の子供を持つことができないことを理解しています。そうでないと、コンテンツサイズの図形を作成して追加するだけです。しかし、そこに描画APIを使用するためにコンテンツオブジェクトを強制するか、キャストする方法はありますか?AS3:ローダーを拡張し、コンテンツの枠線を描く方法

答えて

5

通常、あなたはそれがロードされるときの表示オブジェクトにコンテンツを追加し、それをあなたが好きなだけの操作になります。

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, eventCompleteHandler); 
loader.load(new URLRequest(URL)); 

function eventCompleteHandler(event:Event):void 
{ 
    addChild(createElementWithBorder(event.target.content)); 
} 

function createElementWithBorder(content:DisplayObject):DisplayObject 
{ 
    var container:Sprite = new Sprite(); 

    container.addChild(content); 

    var border:Shape = container.addChild(new Shape()) as Shape; 
    border.graphics.lineStyle(2,0x000000); 
    border.graphics.drawRect(0, 0, content.width,content.height); 

    return container; 
} 

...しかし、あなたはまだイライラ場合が、DisplayObjectContainer、USIとしてローダを使用することはできませんngの組成物は、(以下は単なる簡単な例で、もちろん適応する必要があります)手がかりことがあります

public class LoaderBorder extends Sprite 
{ 

    private var loader:Loader; 

    public function LoaderBorder() 
    { 
     loader = new Loader() 
    } 

    public function load(url:String):void 
    { 
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, eventCompleteHandler); 
     loader.load(new URLRequest(url)); 
    } 

    private function eventCompleteHandler(event:Event):void 
    { 
     loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, eventCompleteHandler); 

     var content:DisplayObject = event.target.content; 

     var border:Shape = new Shape(); 
     border.graphics.lineStyle(2,0x000000); 
     border.graphics.drawRect(0, 0, content.width,content.height); 

     addChild(content); 
     addChild(border); 

    } 
} 

はローダーのように使用する:

var test:LoaderBorder = new LoaderBorder() 
addChild(test); 
test.load(URL);  
+0

あなたの投稿を見る前に、これは私がやったことです。ありがとう – Ronn

+0

構成ルートは – Ronn

+0

ですね。一回の実装でいくつかのタイプの利点/機能を組み合わせたいときはいつも大丈夫です。 –

0

はい、ローダーのコンテンツをキャストできます。 (画像が完全にロードされた後) は、あなたがイメージをロードすると、あなたがこれを行うことができます:

Bitmap(yourLoader.content); 

そしてSWFと

が、私はあなたがこれを行うことができ前提と(それをテストしていない):

Sprite(yourLoader.content); 
0

あなたがにフィルタを追加することができますLoaderを含むムービークリップ。

"グロー"または "ドロップシャドウ"はこれに良い効果があると思います。あなたがそれを正しく設定した場合。

関連する問題