2010-02-22 52 views
1
package 
{ 
    import flash.display.*; 
    import flash.events.*; 
    import flash.net.URLRequest; 

    public class Main extends MovieClip 
    { 
     // state 
     private var iname:String = "image.gif"; 
     private var w:int; 
     private var h:int; 
     private var loader:Loader; 

     // constructor 
     public function Main():void 
     { 
      loadImage(iname); 
      trace(w + " " + h); 

     } 

     // methods 
     private function loadImage(filename:String):void 
     { 
      loader = new Loader(); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, someHandler); 
      var request:URLRequest = new URLRequest(filename); 
      loader.load(request); 
      this.addChild(loader);   
     } 



     // event handlers 
     private function completeHandler(event:Event):void 
     {   
      trace("image loaded\n" + event.target.url); 
      trace(event.target); 
     }   

     private function someHandler(event:Event):void 
     { 
      w = loader.contentLoaderInfo.width; 
      h = loader.contentLoaderInfo.height;    
     } 
    } 
} 

但是,當我跑我得到0 0的寬度和高度。我怎樣才能得到正確的值? 此外,如果圖片加載正確後,我附加到一個movieclip爲什麼我不能從movieclip對象的寬度和高度?如何從裝載機對象獲取寬度和高度

+0

請花幾秒鐘的時間清理任何評論的代碼,然後再發布到這裏,這對我們來說只是更多的閱讀,它並沒有真正做任何事情。 – grapefrukt 2010-02-22 16:25:19

回答

1

在完整事件觸發前,它只是我還是要求寬度和高度?如果在設置它們之後將您的w和h軌跡移動到「someHandler」函數中,您會得到什麼結果?

+0

是的,你是對的,如果我將軌跡移動到「someHandler」功能,然後我正確地採取尺寸。我的問題雖然是我想在構造函數中使用這些維度來從Loader內容中創建一個BitmapData對象,我需要寬度和高度來實例化一個。我該怎麼做,因爲值在構造函數體上看起來是未知的? – Ponty 2010-02-23 00:23:36

+0

這是不可能的,您需要在加載器完成加載後創建位圖數據,然後可能派發一個事件,以便任何需要位圖數據的人都知道它已準備就緒,然後使用它。如果您預加載所有內容,您可以在加載欄顯示時完成所有這些工作,以便在您的應用程序實際啓動信息時,您可以隨心所欲地執行任何操作。 – 2010-02-23 16:17:06

0

加載您的圖片並不即時消息。
跟蹤其中一個Event.COMPLETE處理程序的寬度和高度,它將工作得很好!

+0

是的,就像我對Omnomlets說的那樣,你是對的。但我的問題是將這些值告知構造函數主體,並將它們用作實例化類的構造函數中的新對象的參數(或者如果可能,以另一種方式)。 – Ponty 2010-02-23 00:25:16

0

您要求contentLoaderInfo.height ...您應該詢問內容高度。

h = event.target.content.height; 
w = event.target.content.width; 
+0

您可以獲取contentLoaderInfo的寬度和高度,它將返回對象的標稱寬度或高度,而不考慮縮放值。 – wpjmurray 2010-02-22 19:38:49

+0

不錯的提示wpjmurray – Ponty 2010-02-23 00:26:51