2011-08-24 81 views
0

我的舞臺上有一個movieclip,叫做花花公子裏面的moviclip是一個帶有叫做axeframe的電影剪輯的框架,還有一個叫ax的電影剪輯。我想要做的就是在axaframe上打一擊,這樣當斧頭(只有斧頭不是這個角色)擊中一個敵人(命名敵人)的時候,他會消失在階段上。這是我的代碼:hitesting的武器

addEventListener(Event.ENTER_FRAME, axehit); 

function axehit(event:Event):void { 

if (axe.hitTestObject(enemy)) { 
removeChild(enemy.stage) 
} 
} 

它給了我這個錯誤

1120:未定義的屬性敵人的訪問:未定義的屬性enemy.if(axe.hitTestObject(敵人)){

1120的訪問.removeChild(enemy.stage)

+0

在未來makeing這更好/快/ eaier將是非常有益的 – Thor625

回答

0

你不能只是參考enemy沒有任何進一步的規範(它會假設敵人在你放置代碼的影片剪輯的孩子。嘗試stage.enemy插件tead和thisthis.parent而不是axe。 (假設敵人是stage上的動畫片段,並且您發佈的代碼位於axe內) 另外,您應該將removeChild(enemy.stage)更改爲stage.removeChild(stage.enemy),您應該查看變量作用域。


編輯:沒有。 對不起,只是假裝你沒有讀過(忘了你不能只是通過舞臺參考對象)

要完全誠實地與你,這是我開始的方式,但它不是正確的方法閃光編碼。首先,您應該儘量將所有代碼放在主時間軸上,而不要放在單獨的影片剪輯中,以便更好地協同工作。一旦你掌握了它,你也應該檢查一下面向對象的編程。它確實增加了工作流程,並使您能夠創建更大,更復雜的腳本。

多個編輯:

所以把這個主時間軸,將需要的東西,如:

stage.addEventListener(Event.ENTER_FRAME, loop); 

function loop(event:Event):void { 
    if (axe.hitTestObject(enemy)) { 
     this.removeChild(enemy) 
    } 
} 

哪一個更清潔,更可讀的(並且更容易找到)爲好。 (假設axeenemy是在主舞臺影片剪輯)

+0

我仍然得到這些錯誤的任何更好的方法1119:通過可能未定義的屬性敵人的訪問帶有靜態類型的參考flash.display:Stage。 1120:訪問未定義的屬性敵人。 – Thor625

+0

@Thor檢查我的最新編輯;) – CookieMonster

+0

感謝這是很多的幫助 – Thor625