2014-02-17 38 views
0

這是我的代碼:AS3。全局變量如何獲取出現在偵聽器Event.COMPLETE中的值。

package { 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.display.Loader; 
    import flash.net.URLRequest; 
    import flash.display.LoaderInfo; 
    import fl.transitions.Tween; 
    import fl.transitions.easing.*; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.display.DisplayObject; 

    import flash.display.BitmapData; 
    import flash.display.Bitmap; 
    import flash.display.GradientType; 
    import flash.sampler.getSize; 

public class Miniaturka extends MovieClip { 

    private var id:String; 
    public static var miniWidth:Number = 0; 
    private var tween:Tween; 
    private var tryb:Boolean; 
    private var button:Sprite; 
    private var index:Number; 
    private var aktywna:Boolean = false; 
    public var bLoad:Boolean = false; 
    public function Miniaturka(id:String,index:Number):void { 
     this.id = id; 
     this.index = index; 
     tryb = false; 
     var loader:Loader = new Loader(); 
     loader.load(new URLRequest("images/"+id+"m.jpg")); 
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE,nLoadComplete); 

     this.alpha = 1; 
     button = new Sprite(); 
     button.graphics.beginFill(0x000000,0); 
     button.graphics.drawRect(0,0,889,500); 
     button.graphics.endFill(); 
     button.buttonMode = true; 
     addChild(button); 

     button.addEventListener(MouseEvent.MOUSE_OVER,onOver); 
     button.addEventListener(MouseEvent.MOUSE_OUT,onOut); 
     button.addEventListener(MouseEvent.CLICK,onClick); 
    } 

    private function nLoadComplete(event:Event):void { 

     var loader:Loader = new Loader(); 
     loader = LoaderInfo(event.target).loader; 
     pusty.addChild(loader); 

     ladowanie.visible = false; 
     tween = new Tween(pusty,"alpha",Regular.easeOut,0,0.6,2,true); 
     bLoad = true; 
     setStan(false); 
     miniWidth = loader.width;  
     pusty.alpha = 0; 
    } 

    private function onOver(event:MouseEvent):void { 
     if (!aktywna) { 
      setStan(true); 
     } 
    } 
    private function onOut(event:MouseEvent):void { 
     if (!aktywna) { 
      setStan(false); 
     } 
    } 
    private function onClick(event:MouseEvent):void { 
     aktywuj(); 
    } 
    public function deaktywuj():void { 
     setStan(false); 
     aktywna = false; 
    } 
    public function aktywuj():void {  
     MovieClip(parent).deaktywuj(); 
     aktywna = true; 
     setStan(true); 
     MovieClip(parent.parent).loadBig(id,index); 
    } 

    private function setStan(tryb:Boolean):void { 
     this.tryb = tryb; 
     if (tryb) { 
      pusty.alpha = 1; 
     } else { 
      pusty.alpha = 0.6; 
     } 
    } 
    } 
} 

我想創建一個畫廊,這是它加載JPG類的代碼。文件寬度不同,但高度相同。

我的問題是,我想讓公共靜態var miniWidth取得值:loader.width在函數:nLoadComplete中,將該值作爲全局變量,並將其放在行中:button.graphics.drawRect (0,0,889,500);所以它看起來像button.graphics.drawRect(0,0,miniWidth,500);

這將創建一個按鈕(矩形),其高度和寬度與加載的jpg相同。但我無法弄清楚...有人可以幫忙嗎?

回答

1

在繪製形狀之前等待圖像加載。在下面的例子中,我只重印了受影響的函數。

private function Miniaturka(id:String, index:Number):void { 
    this.id = id; 
    this.index = index; 
    tryb = false; 
    var loader:Loader = new Loader(); 
    loader.load(new URLRequest("images/" + id + "m.jpg")); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, nLoadComplete); 

    this.alpha = 1; 
} 

private function nLoadComplete(event:Event):void { 
    var loader:Loader = new Loader(); 
    loader = LoaderInfo(event.target).loader; 
    pusty.addChild(loader); 

    ladowanie.visible = false; 
    tween = new Tween(pusty, "alpha", Regular.easeOut, 0, 0.6, 2, true); 
    bLoad = true; 
    setStan(false); 
    miniWidth = loader.width; 
    pusty.alpha = 0; 

    createBtn(); 
} 

private function createBtn():void { 
    button = new Sprite(); 
    button.graphics.beginFill(0x000000, 0); 
    button.graphics.drawRect(0, 0, miniWidth, 500); 
    button.graphics.endFill(); 
    button.buttonMode = true; 
    addChild(button); 

    button.addEventListener(MouseEvent.MOUSE_OVER, onOver); 
    button.addEventListener(MouseEvent.MOUSE_OUT, onOut); 
    button.addEventListener(MouseEvent.CLICK, onClick); 
} 
相關問題