2010-02-04 23 views
0

我想在Flash(AS3)已經存在於加載圖像:AS3:加載圖像動態地產生錯誤

<mx:Image id="Img"/>

有了這個代碼:

Img.load('http://www.path.com/image.jpg');

的路徑已驗證可以正常工作,但我總是收到此錯誤: TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。

我使用了文檔中的代碼,仍然收到此錯誤!

回答

1

有了您的圖象在一個隱藏的孩子的回答,你不能訪問這些元素一個視角,從其他人的角度改變你的問題的本質。通過將viewstack的creationPolicy更改爲「all」,您實際上可以訪問該視圖堆棧的子項中的項目,而不會顯示它們。

+0

不錯,謝謝你不知道。 – YesMan85 2010-03-02 10:23:17

0

當使用mx.Image標記時,嘗試使用 IMG.source =「http://path.com/image.jpg」; IMG.load();否則,您可能只需將其設置爲URLRequest; 但是,null對象引用很常見,並且可能來自您在準備好之前嘗試訪問的多個不同vars。 確保您在Flex應用程序準備就緒之前不嘗試訪問IMG。 在您的代碼中,在您定義文檔的MXML的第一行中,確保存在creationComplete =「init()」//或您的初始函數,然後在該函數內分配IMG源。這可確保作爲變量不嘗試訪問mxml中尚未準備好的任何東西/

+0

不,它不是在應用程序準備好之前,這段代碼在代碼中非常深入,並且測試它在init函數中。即使沒有調用load()函數,設置源也會給出完全相同的錯誤。 – YesMan85 2010-02-04 19:55:08

+0

你在編譯時遇到這個錯誤?或者當你嘗試加載? 我能想到的其他事情是使用雙引號:「」而不是單引號(假設上面是直接從源代碼獲取的),或者確保crossdomain.xml設置正確。 – Ian 2010-02-05 20:20:01

0

您何時調用該函數?雖然它不是標準的做法,呼籲Image控件加載方法(設置它的源屬性是比較常見的),這樣應該就可以了:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="onInitialize()"> 

    <mx:Script> 
     <![CDATA[ 

      private function onInitialize():void 
      { 
       Img.load("http://turbonerd.com/media/images/roaming/o/20100203192528.jpg"); 
      } 

     ]]> 
    </mx:Script> 

    <mx:Image id="Img" /> 

</mx:Application> 

,當你調用該方法,雖然這非常重要;如果你在該特定行上獲得空引用,那麼Image控件絕對不存在。

在嘗試訪問代碼中的控件之前,請確保至少等到容器的初始化事件觸發爲止(如上所述)。如果您在運行時動態添加控件,那麼您應該等到控件的初始化事件發生後,才能確保有對象可以使用。

+0

好的問題是,圖像組件被放置在一個stackview上的畫布上,顯然你不能訪問這些元素,而這個畫布是不可見的! – YesMan85 2010-02-07 20:49:27

0

好了,問題是,圖像組件被放置在畫布這是一個stackview上,顯然雖然這畫布是無形