我正在爲我的班級製作一款類似於Space Invaders/Galaga的遊戲。我是新來的ActionScript和編碼,我已經創建了一個敵人類,我已經產生了它,然後沿x方向移動。我只是想知道如何讓我的敵人在我的舞臺達到700x500的末端後下降,然後繼續前往另一邊,我假設在我的敵人階級中植入一條if語句,只是不確定如何去做,任何幫助都會做,非常感謝的人。在舞臺上保留物品-Flash
敵對階級
package
{
import flash.display.MovieClip;
public class Enemy extends MovieClip
{
public function Enemy()
{
x = 60;
y = 30;
}
public function moveDownABit():void
{
}
public function moveRight():void
{
x = x + 2;
}
public function moveDown():void
{
}
public function moveLeft():void
{
}
public function moveUp():void
{
}
}
}
遊戲
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class SpaceVigilanteGame extends MovieClip
{
public var enemy:Enemy;
public var avatar:Avatar;
public var gameTimer:Timer;
var gameWidth:int = 0;
var gameHeight:int = 0;
public function SpaceVigilanteGame()
{
enemy = new Enemy();
addChild(enemy);
avatar = new Avatar();
addChild(avatar);
gameWidth = stage.stageWidth;
gameHeight = stage.stageHeight;
gameTimer = new Timer(25);
gameTimer.addEventListener(TimerEvent.TIMER, moveEnemy);
gameTimer.start();
}
public function moveEnemy(timerEvent:TimerEvent):void
{
//enemy.moveDownABit();
if(enemy.x+enemy.width+2<=gameWidth)
{
enemy.moveRight();
}
else if(enemy.y+enemy.height+2<=gameHeight)
{
enemy.moveDown();
}
else if(enemy.x-2>=0)
{
enemy.moveLeft();
}
else if(enemy.y-2>=0)
{
enemy.moveUp();
}
}
}
}
我得到一個錯誤1061:調用可能未定義的方法moveRight通過與敵人的靜態類型的引用 – 2015-03-31 06:54:13
那麼,你的Enemy類有一個叫'moveRight'的函數嗎?我懷疑它,因爲我沒有在我的答案中寫出函數,只是函數名;) – DodgerThud 2015-03-31 06:55:28
讓我確定我正確地做了這件事,對於我的無知感到抱歉,幾年前我有一個Flash課程,並且避風港之後我們並沒有觸及它,甚至在那之後,我們沒有做太多的腳本編寫工作,並且我們使用了我們的時間線,但是我會回到我的Enemy.as中,並使用名爲moveRight,moveDown,moveLeft和moveUp的函數?如果是這樣,我是否需要應用任何值?此外,我與私有變量有衝突問題。 – 2015-03-31 07:27:05