2013-04-20 67 views
0

我正在製作一個可以與敵人作戰的Flash遊戲。我爲一個我稱之爲粘液的敵人做了整個AI。現在,我想在現場把這個敵人的多,我不知道如果我不得不復制所有的代碼,例如slime1 slime2等使用AI複製敵人

if ((img_background.BackGround.wall).hitTest(slime._x + radius, slime._y,true)) { // When the slime hits a right wall 
    slime._x -= 8 
} 

if ((img_background.BackGround.wall).hitTest(slime._x, slime._y + radius, true)) { 
    slime._y -= 8; 
} 
if ((img_background.BackGround.wall).hitTest(slime._x, slime._y - radius, true)) { 
    slime._y += 8; 
} 
if ((img_background.BackGround.wall).hitTest(slime._x - radius, slime._y, true)) { 
    slime._x += 8; 
} 

if ((img_background.BackGround.wall).hitTest(slime._x)){ 
    SLIwalltouch = 1 
}else{ 
    SLIwalltouch = 0 
} 

我可以分配多個值的變量,並完成類似:「粘液」+ numberofslimes ..... 我是新來的,我需要幫助。謝謝。

注:我使用Flash ActionScript 2.0中

+0

是煤泥一個影片剪輯? – RafH 2013-04-20 18:27:24

回答

0

使用函數來包裝代碼和參數將任何影片剪輯你想要的。首先,我們準備一個函數來檢查針對「目標」的命中測試。讓我們把它checkTouch,例如,我已經取代了「泥」與「目標」的所有匹配

function checkTouch(target){ 
     // When the slime hits a right wall 
     if ((img_background.BackGround.wall).hitTest(target._x + radius, target._y,true)){ 
     target._x -= 8 
     } 
     if ((img_background.BackGround.wall).hitTest(target._x, target._y + radius, true)) { 
     target._y -= 8; 
     } 
     if ((img_background.BackGround.wall).hitTest(target._x, target._y - radius, true)) { 
     target._y += 8; 
     } 
     if ((img_background.BackGround.wall).hitTest(target._x - radius, target._y, true)) { 
     target._x += 8; 
     } 

     if ((img_background.BackGround.wall).hitTest(target._x)){ 
     SLIwalltouch = 1 
     }else{ 
     SLIwalltouch = 0 
     } 
    } 

通知。此時,您可以使用任何您喜歡的動畫片段來調用該函數,並且會檢查該動畫片段的點擊次數。

使代碼做完全一樣的你,只補充一點:

checkTouch(slime); 

現在這應該是如何檢查多個對象的提示。如果你有,比方說,敵人被稱爲「泥」,「slime2」,「地獄犬」和「龍」,你可以做

checkTouch(slime); 
    checkTouch(slime2); 
    checkTouch(hellhound); 
    checkTouch(dragon); 

但是,如果你最終有更多的敵人將是更爲有用到敵人添加到一個數組,然後應用功能,他們在一個循環:

var all_enemies=[slime, slime2, hellhound, mushroom, ..., enemyN]; 

    for(enemy in all_enemies){ 
     checkTouch(enemy); 
    } 

請注意,爲了發揮作用,敵人必須出現在舞臺上,然後才能像這樣的陣列中的聲明即可。

如果你不想寫出陣列中的所有敵人,並知道你將擁有的敵人的確切數量,你可以利用閃光燈構建動畫片名稱的能力。

它是這樣的,名字所有的敵人像enemy1,enemy2,enemy3,... 然後進行for循環是這樣的:

for(i=0; i<numberofenemies; i++){ //replace numberofenemies with the number of enemies 
     checkTouch(this["enemy"+i]); 
    }