网上下了一个打飞机的源代码。
我想加个定时器,然后到了时间结束,但是发现结束之后敌机还在飞。
请问怎么把屏幕上的敌机全部清空?用removeChild命令吗?
我在时间到了之后插入了
removeChild(diji0)
removeChild(dijiA)
但是好像都不管用
具体AS代码如下:
求各位大佬指教~
var screenWidth:Number=stage.stageWidth;
var screenHeight:Number=stage.stageHeight;
var initH:Number=-1000;
var num:Number=30;
var dijiA:Array=new Array();
var zidanA:Array=new Array();
var score:Number=0;
//初始化敌机
for (var i:uint=0; i<num; i++) {
var diji0:diji=new diji();
diji0.x=Math.random()*screenWidth;
diji0.y=Math.random()*initH;
addChild(diji0);
diji0.scaleX=diji0.scaleY=0.5+Math.random()*0.5;
dijiA.push(diji0);
//trace(dijiA[i].y)
sc.text=score
}
var woji0:woji=new woji();
woji0.x=screenWidth/2;
//trace(screenHeight,woji0);
woji0.y=screenHeight-woji0.height;
addChild(woji0);
addEventListener(Event.ENTER_FRAME,onEnterFrame);
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
function onEnterFrame(e:Event):void {
movedj();
movezidan();
sc.text=score
}
function movedj():void {
for (var i:uint=0; i<num; i++) {
var diji0:diji=dijiA[i];
diji0.y+=3;
if (diji0.y>screenHeight) {
diji0.y=initH*Math.random();
diji0.scaleX=diji0.scaleY=0.5+Math.random()*0.5;
}
}
}
function movezidan() {
for (var j:uint=0; j<zidanA.length; j++) {
zidanA[j].y-=10;
if (zidanA[j].y<-10) {
removeChild(zidanA[j]);
zidanA.splice(j,1);
}
if (zidanA.length==0) {
break;
}
for (var i:uint=0; i<num; i++) {
if (zidanA[j].hitTestObject(dijiA[i])) {
removeChild(zidanA[j]);
score+=1
zidanA.splice(j,1);
dijiA[i].x=Math.random()*screenWidth;
dijiA[i].y=Math.random()*initH;
if (zidanA.length==0 || j==0) {
return;
}
j--
}
}
}
}
function onKeyDown(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.LEFT :
woji0.x-=5;
if (woji0.x<0) {
woji0.x=0;
}
break;
case Keyboard.RIGHT :
woji0.x+=5;
if (woji0.x>screenWidth) {
woji0.x=screenWidth;
}
break;
case Keyboard.SPACE :
shoot();
break;
default :
break;
}
}
function shoot():void {
var zidan0:zidan=new zidan();
zidan0.x=woji0.x-zidan0.width/2;
zidan0.y=screenHeight-woji0.height;
addChild(zidan0);
zidanA.push(zidan0);
}
我想加个定时器,然后到了时间结束,但是发现结束之后敌机还在飞。
请问怎么把屏幕上的敌机全部清空?用removeChild命令吗?
我在时间到了之后插入了
removeChild(diji0)
removeChild(dijiA)
但是好像都不管用
具体AS代码如下:
求各位大佬指教~
var screenWidth:Number=stage.stageWidth;
var screenHeight:Number=stage.stageHeight;
var initH:Number=-1000;
var num:Number=30;
var dijiA:Array=new Array();
var zidanA:Array=new Array();
var score:Number=0;
//初始化敌机
for (var i:uint=0; i<num; i++) {
var diji0:diji=new diji();
diji0.x=Math.random()*screenWidth;
diji0.y=Math.random()*initH;
addChild(diji0);
diji0.scaleX=diji0.scaleY=0.5+Math.random()*0.5;
dijiA.push(diji0);
//trace(dijiA[i].y)
sc.text=score
}
var woji0:woji=new woji();
woji0.x=screenWidth/2;
//trace(screenHeight,woji0);
woji0.y=screenHeight-woji0.height;
addChild(woji0);
addEventListener(Event.ENTER_FRAME,onEnterFrame);
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
function onEnterFrame(e:Event):void {
movedj();
movezidan();
sc.text=score
}
function movedj():void {
for (var i:uint=0; i<num; i++) {
var diji0:diji=dijiA[i];
diji0.y+=3;
if (diji0.y>screenHeight) {
diji0.y=initH*Math.random();
diji0.scaleX=diji0.scaleY=0.5+Math.random()*0.5;
}
}
}
function movezidan() {
for (var j:uint=0; j<zidanA.length; j++) {
zidanA[j].y-=10;
if (zidanA[j].y<-10) {
removeChild(zidanA[j]);
zidanA.splice(j,1);
}
if (zidanA.length==0) {
break;
}
for (var i:uint=0; i<num; i++) {
if (zidanA[j].hitTestObject(dijiA[i])) {
removeChild(zidanA[j]);
score+=1
zidanA.splice(j,1);
dijiA[i].x=Math.random()*screenWidth;
dijiA[i].y=Math.random()*initH;
if (zidanA.length==0 || j==0) {
return;
}
j--
}
}
}
}
function onKeyDown(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.LEFT :
woji0.x-=5;
if (woji0.x<0) {
woji0.x=0;
}
break;
case Keyboard.RIGHT :
woji0.x+=5;
if (woji0.x>screenWidth) {
woji0.x=screenWidth;
}
break;
case Keyboard.SPACE :
shoot();
break;
default :
break;
}
}
function shoot():void {
var zidan0:zidan=new zidan();
zidan0.x=woji0.x-zidan0.width/2;
zidan0.y=screenHeight-woji0.height;
addChild(zidan0);
zidanA.push(zidan0);
}

