2013-03-28 94 views
-1

工作在這個Flash AS3應用程序,並且當我嘗試製作imgLoader可點擊時,我不斷收到此錯誤。錯誤#1009:無法訪問空對象引用的屬性或方法

imgLoader是一個動態加載器,它將從XML文件加載圖像,並通過Actionscript創建圖像。

這是完全錯誤我得到:

類型錯誤:錯誤#1009:無法訪問空對象引用的屬性或方法。 在apptest_fla :: MainTimeline /幀1()[apptest_fla.MainTimeline ::幀1:65] 在運行時:: ContentPlayer/loadInitialContent() 在運行時:: ContentPlayer/playRawContent() 在運行時:: ContentPlayer/playContent() 在運行時:: AppRunner/run()的 在全球/運行ADLAppEntry/run()的 :: ADLEntry()

,這是爲了使imgLoader點擊代碼:

imgLoader.addEventListener(MouseEvent.CLICK, doSomething); 
function doSomething(event:MouseEvent){ 
nextFrame() 
} 

人知道這是爲什麼發生?

在此先感謝。

編輯

這是我的全部代碼:

stop(); 

import flash.display.Loader; 
import flash.events.Event; 
import flash.net.URLRequest; 
import flash.display.Sprite; 
import flash.filters.DropShadowFilter; 

var xmlLoader11:URLLoader; 
var xml11:XML; 


var uRequest11 = new URLRequest("my.xml"); 
xmlLoader11 = new URLLoader(uRequest11); 
xmlLoader11.addEventListener(Event.COMPLETE, onXMLLoad11); 
var imgLoader11:Loader; 
var nameLoader11:Loader; 
var myString11:String = 'loading'; 

function onXMLLoad11(e:Event) { 
    xml11 = new XML(e.target.data); 
    imgLoader11 = new Loader(); 
    imgLoader11.contentLoaderInfo.addEventListener(Event.COMPLETE, onImgLoaded11); 
    imgLoader11.load(new URLRequest(xml11.Data.Image.text()[0])); 
    Nametxt11.text = "" + xml11.Data.Name.text()[0]; 
} 


function onImgLoaded11(e:Event) { 
    addChild(imgLoader11); 
    imgLoader11.height = 300; 
    imgLoader11.width = 300; 

    var bitmapContent11:Bitmap = Bitmap(e.target.content); 
    bitmapContent11.smoothing = true; 
    addChild(bitmapContent11); 
    bitmapContent11.height = 150; 
    bitmapContent11.width = 150; 
    bitmapContent11.y = 65; 
    bitmapContent11.x = 85; 
} 
imgLoader11.addEventListener(MouseEvent.CLICK, doSomething); 
function doSomething(event:MouseEvent){ 
nextFrame() 
} 
+1

添加一個語句來檢查是否添加了「imgLoader」。 – David

+0

謝謝大衛。我怎麼做? –

+0

在'onXMLLoad11(e:Event)'末尾附加'imgLoader11.addEventListener(MouseEvent.CLICK,doSomething);',併爲'doSomething(event:MouseEvent)'添加if語句。就像'if(imgLoader11!= null)'。 AS3在處理物體時非常挑剔。 – David

回答

0

是否打破時,這就是所謂的:

imgLoader.addEventListener(MouseEvent.CLICK, doSomething); 

,或者這個被稱爲:

nextFrame() 

在第一種情況下,imgLoader爲null。在第二種情況下,您嘗試訪問nextFrame()後調用的字段或方法的內容爲null。

編輯:

嘗試移動此:

imgLoader11.addEventListener(MouseEvent.CLICK, doSomething); 
function doSomething(event:MouseEvent){ 
nextFrame() 
} 

到onXMLLoad11的底部()。

function onXMLLoad11(e:Event) { 
    xml11 = new XML(e.target.data); 
    imgLoader11 = new Loader(); 
    imgLoader11.contentLoaderInfo.addEventListener(Event.COMPLETE, onImgLoaded11); 
    imgLoader11.load(new URLRequest(xml11.Data.Image.text()[0])); 
    Nametxt11.text = "" + xml11.Data.Name.text()[0]; 

    imgLoader11.addEventListener(MouseEvent.CLICK, doSomething); 
    function doSomething(event:MouseEvent){ 
    nextFrame() 
    } 
} 
+0

imgLoader.addEventListener(MouseEvent.CLICK,doSomething); –

+0

是啊,imgLoader的null。你需要實例化它。假設它的類的名字是ImageLoader,你需要調用imgLoader = new ImageLoader();或者你有什麼提前。或者如果它沒有類,imgLoader = new Object();如果你的代碼中已經有了類似的東西,問題是它正在被實例化的代碼行在你調用addEventListener()的代碼行之前沒有達到。 – Panzercrisis

+0

感謝隊友,讓我試試看。 –

相關問題