вам определенно нужно научиться правильно делать отступы в вашем коде.Как видите, это приводит не только к путанице, но и ко многим ошибкам.
Проблема в том, что эта часть кода
this._y -= this.ySpeed;
this._x += this.xSpeed;
trace("missile: " + missileNum);
if(0 > this._x || this._x > 800 || 0 > this._y || this._y > 600)
this.removeMovieClip();
не находится в слушателе события onEnterFrame.переместите блуждающую фигурную скобку НИЖЕ этого кода.также погрузите missleNum++
часть над 1 скобкой
, другими словами, преобразуйте это:
// this.attachMovie("enemy", "enemy", 3 );
}
this._y -= this.ySpeed;
this._x += this.xSpeed;
trace("missile: " + missileNum);
if(0 > this._x || this._x > 800 || 0 > this._y || this._y > 600)
this.removeMovieClip();
}
missileNum++;
в это:
// this.attachMovie("enemy", "enemy", 3 );
this._y -= this.ySpeed;
this._x += this.xSpeed;
trace("missile: " + missileNum);
if(0 > this._x || this._x > 800 || 0 > this._y || this._y > 600)
this.removeMovieClip();
}
missileNum++;
}
также, кажется, чтопредоставленный вами код содержит 2 ненужных / неиспользуемых} скобки в конце кода.
позвольте мне дать вам полную, правильно отступающую часть "missle":
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.enemy2)) {
_root.enemy2.play ();}
if(this.hitTest(_root.enemy3)) {
_root.enemy3.play ();}
if(this.hitTest(_root.enemy4)) {
_root.enemy4.play();}
if(this.hitTest(_root.enemy5)) {
_root.enemy5.play();}
// this.attachMovie("enemy", "enemy", 3 );
this._y -= this.ySpeed;
this._x += this.xSpeed;
trace("missile: " + missileNum);
if(0 > this._x || this._x > 800 || 0 > this._y || this._y > 600)
this.removeMovieClip();
}//end of the missle's onEnterFrame
missileNum++;
}//end of the Key.isDown
еще одно предложение, которое я хотел бы сделать, это переместить своих врагов в массив, скажем, «враги» в начале
var enemies:Array = new Array(); //initiate them now or later
, тогда вы можете толкнуть врагов, как вы это делаете с ракетными врагами.push (_root.some_newly_created_enemy);
, а затем выполните
foreach(enemy in enemies){
if(this.hitTest(enemy)) {
enemy.play();}
}
вместо того, чтобы проверять их статически один за другим