我在flash中制作了一个游戏,游戏的第一级也有效,但是在你完成关卡后,我不确定要测试的编码,看看所有的敌人,因为他们是电影剪辑,从闪光灯中卸载,所以它将移动到第二级。我知道有办法做到这一点,我只是不确切地知道如何做,也不知道在哪里寻求帮助。
这是我到目前为止所做的编码。
这是我编写的一个敌人角色的编码,他是一个电影剪辑,他们都有不同的价值观让事情变得有趣。
onClipEvent (enterFrame){
if(_root.spaceship._y>_y) {_y +=5;}
if(_root.spaceship._y<_y) {_y -=5;}
if(_root.spaceship._x>_x) {_x +=5;}
if(_root.spaceship._x<_x) {_x -=5;}
}
这是我在玩家身上的编码,恰好是宇宙飞船。
//Initialize Variable
onClipEvent(load) {
var shipSpeed:Number = 20;
var rotationSpeed:Number = 20;
var missileNum:Number = 0;
var missile:Array = new Array();
var missleSpeed:Number = 30;
}
onClipEvent (enterFrame) {
if(Key.isDown(Key.LEFT)) {
_rotation -= rotationSpeed;
}
if(Key.isDown(Key.RIGHT)) {
_rotation += rotationSpeed;
}
var radian:Number = (-1 * _rotation + 90) * Math.PI/180;
if(Key.isDown(Key.UP)) {
_x += shipSpeed * Math.cos(radian);
_y -= shipSpeed * Math.sin(radian);
}
if(Key.isDown(Key.DOWN)) {
_x -= shipSpeed * Math.cos(radian);
_y += shipSpeed * Math.sin(radian);
}
//hit test
if(this.hitTest(_root.enemy1))
{
//trace("spaceship")
_root.spaceship.play(2);
}
//Shoot missile in direction the ship is facing
if(Key.isDown(Key.SPACE)) {
missile[missileNum] =
_root.attachMovie("missile","missile"+missileNum,_root.getNextHighestDepth(),{_x:_x,_y:_y,_rotation:_rotation});
missile[missileNum].ySpeed = Math.sin(radian)*missleSpeed;
missile[missileNum].xSpeed = Math.cos(radian)*missleSpeed;
missile[missileNum].onEnterFrame = function() {
if(this.hitTest(_root.enemy)) {
_root.enemy.play (13);
if(this.hitTest(_root.enemy1)) {
this.play()
_root.enemy1.play(13);
}
if(this.hitTest(_root.enemy2)) {
this.play()
_root.enemy2.play(13);
}
if(this.hitTest(_root.enemy3)) {
this.play()
_root.enemy3.play(13);
}
if(this.hitTest(_root.enemy4)) {
this.play()
_root.enemy4.play(13);
}
if(this.hitTest(_root.enemy5)) {
this.play()
_root.enemy5.play(13);
}
// this.attachMovie("enemy", "enemy", 3 );
}
this._y -= this.ySpeed;
this._x += this.xSpeed;
trace("missile: " + missileNum);
if(0 > this._x || this._x > 1000000000 || 0 > this._y || this._y > 1000000000)
this.removeMovieClip();
}
missileNum++;
}
}
如果你不能直接帮助我,你可以指出我正确的方向,或者给我一个链接到一个网页,这将有助于我更好地理解动作。
答案 0 :(得分:1)
只需创建一个变量来跟踪剩下的敌人数量。每次向场景添加敌人时,请增加变量。每次敌人被摧毁时,减少变量。然后在船的enterFrame函数中检查该变量。
我同意转向AS3,更好地构建代码。我花了一分钟看着你的代码才意识到它是AS2。我记得通过单击舞台上的不同对象可以访问所有不同的功能,这让我感到不寒而栗。
答案 1 :(得分:0)
你可以创建一个包含被摧毁的敌人的数组
var deadEnemies:Array = [];
if(this.hitTest(_root.enemy5)) {
this.play()
_root.enemy5.play(13);
if (deadEnemies.indexOf(_root.enemy5) == -1)
{
deadEnemies.push(_root.enemy5);
}
}
然后测试它
if (deadEnemies.length == 5)
{
trace("level2");
}
此外,我认为这没有用,但我必须说出来:
干杯