我正在为我的班级制作一款类似于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