2015-01-20 78 views
1
package { 

import flash.display.MovieClip; 
import flash.events.MouseEvent; 

public class ro extends MovieClip { 


    public function ro() { 
     one.addEventListener(MouseEvent.CLICK,bu3); 
     two.addEventListener(MouseEvent.CLICK,bu4); 
     function bu3 (event:MouseEvent){ 
      trace("1"); 
     } 
     function bu4 (event:MouseEvent){ 
      trace("2"); 
    } 
    } 
} 

}閃光AS3錯誤#1009

我在10個第一幀作出了動畫和在幀11 I由兩個按鈕到第一I給出了實例名「一」和第二按鈕我給了名字「兩」,然後我開始了程序,我得到了這個:

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
at ro()[C:\Users\cnndani\Desktop\New folder (2)\ro.as:10] 
at runtime::ContentPlayer/loadInitialContent() 
at runtime::ContentPlayer/playRawContent() 
at runtime::ContentPlayer/playContent() 
at runtime::AppRunner/run() 
at ADLAppEntry/run() 
at global/runtime::ADLEntry() 

有什麼問題?我該怎麼做?

回答

1

ro是你的文檔類嗎? 當您啓動程序時,Flash運行時會檢查動畫的第一幀。因爲在這第一幀中沒有任何叫做'one'或'two'的實例(當你告訴它時,它會從你的代碼中得到預期的結果:初始化我的程序,並立即爲'one'和'two'分配監聽器)錯誤:Cannot access a property or method of a null object reference - 意思是:「我不能把一個空對象的東西」(電話:addEventListener方法;對:一/二,在該幀是空的情況下)

您將需要等待幀11.在這種情況下,從滴構造這些行有分配事件偵聽器:

addEventListener(Event.FRAME_CONSTRUCTED, onFrameConstructed); 

.... 

function onFrameConstructed(e:Event):void { 
    if(this.currentFrame == 11) { 
     removeEventListener(Event.FRAME_CONSTRUCTED, onFrameConstructed); 
     one.addEventListener(MouseEvent.CLICK,bu3); 
     two.addEventListener(MouseEvent.CLICK,bu4); 
    } 
} 

當然有無數的方法可以做到這一點,這只是一個例子。