2013-04-17 71 views
0

所以我仍然是相當新的AS3,並且我得到我的頭在錯誤和東西,我試圖找出爲什麼這是不工作應該如何,該功能仍然執行,但它在我的控制檯上留下一個錯誤。這裏是我的代碼:AS3無法訪問空對象引用的屬性或方法,問題與gotoAndPlay

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

stop(); 

var activeHitArray:Array = new Array(word_select_box); 
var activeDropArray:Array = new Array(answer1_word, answer2_word, answer3_word); 
var hitPositionsArray: Array = new Array(); 

for (var numi:int = 0; numi < activeDropArray.length; numi++) { 
activeDropArray[numi].buttonMode = true; 
activeDropArray[numi].addEventListener(MouseEvent.MOUSE_DOWN, mousedown1); 
activeDropArray[numi].addEventListener(MouseEvent.MOUSE_UP, mouseup1); 

    hitPositionsArray.push({xPos:activeDropArray[numi].x,  yPos:activeDropArray[numi].y}); 

} 

function mousedown1(event:MouseEvent):void { 
event.currentTarget.startDrag(); 
setChildIndex(MovieClip(event.currentTarget), numChildren - 1); 
} 

function mouseup1(event:MouseEvent):void { 
var dropindex1:int = activeDropArray.indexOf(event.currentTarget); 
var target:MovieClip = event.currentTarget as MovieClip; 
target.stopDrag(); 

if(target.hitTestObject(activeDropArray[dropindex1])){ 
      // target.x = activeHitArray[dropindex1].x; 
      //target.y = activeHitArray[dropindex1].y; 

      if(answer1_word.hitTestObject(word_select_box)){ 
        gotoAndStop("6"); 
      } 

} else { 
     target.x = hitPositionsArray[dropindex1].xPos; 
     target.y = hitPositionsArray[dropindex1].yPos; 
} 


} 

,我通過得到的錯誤是: 類型錯誤:錯誤#1009:無法訪問空對象引用的屬性或方法。 在game_flv_fla :: MainTimeline/frame6() 在flash.display使用::影片剪輯/ gotoAndStop() 在game_flv_fla :: MainTimeline/mouseup1()

我能想到的唯一的事情是,它是事做與gotoAndPlay(),因爲當我把一個跟蹤到它的地方,我沒有得到任何錯誤。

+0

只看[這個問題(第一個註釋http://stackoverflow.com/questions/16027616/as3-flash-error-cannot-訪問一個屬性或 - 方法對的一空對象引用#comment22866156_16027616)。這裏同樣適用。 – Marty

回答

0

我複製了你的代碼,編譯後發佈到Flash IDE中。有用! :) 沒有錯誤。

但我知道在哪裏可能奠定。無論是否仍有鏈接的對象,addEventListeners仍然處於打開狀態。您需要纔去下一幀清理所有活動的事情:

if(target.hitTestObject(activeDropArray[dropindex1])){ 
    if(answer1_word.hitTestObject(word_select_box)){ 
     for (var i:uint = 0; i < activeDropArray.length; i++) { 
      activeDropArray[i].removeEventListener(MouseEvent.MOUSE_DOWN, mousedown1); 
      activeDropArray[i].removeEventListener(MouseEvent.MOUSE_UP, mouseup1); 
     } 
     gotoAndStop("6"); 
    } 
} 
+0

嘿,男人!,只是嘗試從你給我那裏的代碼工作,那裏有一個語法錯誤,我無法確定哪一個位D:,我對動作無能爲力,對不起D: – Aiden

+0

我唯一已添加,是您的命中測試條件中的'for'循環。它只是從對象中刪除eventListeners,因爲你不再需要它們。我複製了你的代碼,並沒有產生任何錯誤。 – SzRaPnEL

+0

這是非常奇怪的人,當我實現你寫的代碼(我輸入它和C&P)時,我得到一個語法錯誤,我很困惑D: – Aiden

相關問題