2011-05-13 23 views
0

我正在使用ActionScript 2.0製作一個非常簡單的基於回合的戰鬥遊戲。有沒有一種簡單的方法可以讓影片剪輯在Flash中識別自己? (AS2)

我很新的代碼,只有非常有限的Visual Basic知識,所以我會高興地承認,我真的不知道我在做什麼。我有一個開始,但我決定重寫整個事情,因爲我無法輕鬆地循環敵人和關卡。

我使用_root.attachMovie生成了兩次相同的敵人,並將它們識別爲Enemy1Enemy2。產卵他們之後,我試圖讓他們找出自己與:

_root.Enemy1.identify = "Enemy1" 
_root.Enemy1.identify = "Enemy1" 

使用調試器,這顯然作品(影片剪輯中,他們有一個叫做識別正確標註這些變量),但是當我嘗試使用一個if語句,所以我可以把它們放在自己的個人職位上,這根本行不通;它直掠過去。影片剪輯中的代碼我已經是:

if (identify == "Enemy1") { 

    function poschange() { 

     _root.Enemy1._x = _root.Enemy1.POSX; 

     _root.Enemy1._y = _root.Enemy1.POSY; 

     _root.Enemy1.swapDepths(_root.Enemy1.POSY); 

    } 

} else if (identify == "Enemy2") { 

    function poschange() { 

     _root.Enemy2._x = _root.Enemy2.POSX; 

     _root.Enemy2._y = _root.Enemy2.POSY; 

     _root.Enemy2.swapDepths(_root.Enemy2.POSY); 

    } 

} 

poschange(); 

的poschange功能工作正常的玩家角色,它只是這個if語句來識別敵人這顯然是失敗。

是否有一個影片剪輯,以確定自己的ID任何更簡單的方法,所以我沒有用這種方法,還是有隻是一些錯我的代碼?

回答

2

就我個人而言,我會遠離以這種方式使用內聯函數。我會寫一個poschange函數,它的敵人,就像這樣,

function poschange(enemy) { 
    enemy._x = enemy.POSX; 
    enemy._y = enemy.POSY; 
    enemy.swapDepths(enemy.POSY); 
} 

而且你會從調用它的if語句一樣,

if (identify == "Enemy1") { 
    poschange(_root.Enemy1); 
} 
else if(identify == "Enemy2") { 
    poschange(_root.Enemy2); 
} 

但是,這未必是,也不解決你的問題。在if語句的時候,你從哪裏獲得「標識」屬性?如果你從一個實際的敵對物體獲得它,爲什麼不忘記if語句並運行poschange(curEnemy)或類似的?

+0

腳本切換敵人的運動中有自己的處理這就是爲什麼我粗暴地使用「識別」的原因,所以它知道它實際上必須移動哪個影片剪輯(在我的情況下,例如說,使用同一個敵人兩次)。無論如何,非常感謝!這幫助了絕對的噸,它現在完美。 – Odzs

+0

很高興它的工作原理很多,但我也建議你儘可能地轉向AS3。如果你是一個經驗豐富的AS2人員,這很難改變,但如果你剛剛開始,那麼直接進入AS3會更好,原因很多。它更加標準,你在其中編程的方式會非常適合其他語言,比如Javascript和基於ECMAScript的其他語言。 – seaders

0

作爲一個AS 3編程我自己,讓我添加任何我看到作爲一個解決方案,首先如果我們要找出MovieClip的ID或名字大家應該可以這樣說this.name。

再次見到的代碼後,我感到有點困惑,如果我們實際上是調用函數poschange(),或者你給它供我們參考這種方式。 :?

展望未來的問題的答案是:是在AS 3.0。

1

你要找的屬性是_name。這將包含您在連接MovieClip時設置的實例名稱。

+0

這也幫助了很多!謝謝! – Odzs

0

使用root是非常糟糕的做法,但爲什麼不這樣做呢?

if (identify == "Enemy1") { 

      _root.Enemy1._x = _root.Enemy1.POSX; 

      _root.Enemy1._y = _root.Enemy1.POSY; 

      _root.Enemy1.swapDepths(_root.Enemy1.POSY); 

    } else if (identify == "Enemy2") { 

      _root.Enemy2._x = _root.Enemy2.POSX; 

      _root.Enemy2._y = _root.Enemy2.POSY; 

      _root.Enemy2.swapDepths(_root.Enemy2.POSY); 

    } 
如果想要做你的方式嘗試_root.postchange =功能(

){..}(感覺真髒書面)

相關問題