2012-11-09 55 views
1

好吧繼承人的事情,我正在做一個磚破碎機遊戲。即時嘗試構建它,以便我可以手動添加磚塊,而不是使用代碼。磚破碎機撞擊測試錯誤

在舞臺上有一個球(「球」),目前正在瀏覽鼠標移動,以及一個帶有命中測試代碼的磚塊動畫片。

繼承人的大型機代碼:

import flash.events.Event; 

addEventListener(Event.ENTER_FRAME,moveBall); 

function moveBall (e:Event):void{ 
Ball.x = mouseX; 
Ball.y = mouseY; 
} 

和繼承人的代碼,我的磚影片剪輯中寫道:

addEventListener(Event.ENTER_FRAME,checkHit); 

function checkHit (e:Event):void{ 
    if(this.hitTestObject(Ball)){ 
    trace ("HIT!!"); 
} 
} 

這就是所有的代碼和球和磚都是alredy在舞臺上。 當我跑這個我得到「符號'磚',圖層'層1',第1幀,第6行1120:訪問未定義的屬性球。」

線6:

if(this.hitTestObject(Ball)){ 

請告訴我爲什麼,以及如何解決這個問題..我試圖將對象改爲stage.Ball,我仍然得到一個錯誤:(

感謝推進

回答

1

,您會收到錯誤,因爲Ball是不是在你的任何磚塊的範圍(這是一個不同的時間表,不知道球)。

您可以使用parent關鍵字訪問球。例如:MovieClip(parent).Ball可能會工作。

一個更有效的建議: 將此addEventListener(Event.ENTER_FRAME,moveBall);更改爲使用MouseEvent.MOUSE_MOVE代替ENTER_FRAME。這樣它只會在鼠標移動時觸發。

+0

感謝您的幫助! MOUSE_MOVE將被使用=],但我試圖改變線if(this.hitTestObject(MovieClip.parent(Ball))){和我再次得到相同的錯誤加上「通過靜態引用調用一個可能未定義的方法父類型類「。如果我寫「Ball.parent.Ball」,那麼舊的錯誤無論如何跳轉。 =/ –

+0

應該是:'if(this.hitTestObject(MovieClip(parent).Ball)){' – BadFeelingAboutThis

+0

你是一個真正的天才!謝啦! =]完美地工作 –