我正在制作一个狙击游戏,我正在尝试修复一个问题,当我点击该角色杀死他时我会遇到这个问题。无论如何,创建了一个很短的多个MovieClip实例,并且我需要在执行if语句的同时删除它们。这是可能的,如果是这样,代码是什么?
代码:
stop();
Mouse.hide();
var blood:Array = [];
// after you create your clips your needing to keep track of.
var level_complete1:level_complete = new level_complete();
var ammo:Number = 5;
var cash:Number= 100;
var level:Number = 1;
var exp:Number = 0;
var blood_c:Number = 0;
var exp_needed = 25;
var dead_check:Number = 0; //Check to see if the target is dead
var check_blood:Number = 0; //Check to make sure blood doens't loop
var blood_splat1:blood_splat = new blood_splat();
blood.push(blood_splat1);
target1.addEventListener(MouseEvent.CLICK, target_shot);
function target_shot(event:MouseEvent):void{
if(dead_check==0){
addChild(blood_splat1);
blood_splat1.y = mouseY;
blood_splat1.x = mouseX;
target1.gotoAndPlay(32);
if (blood_splat1.currentFrame==6){
//blood_splat1.gotoAndStop(6);
//removeChild(blood_splat1);
cash=cash+150;
exp=exp+25;
ammo=ammo-1;
dead_check = 1;
blood_c = 1;
}
}
if (dead_check==1){
addChild(blood_splat1);
blood_splat1.y = mouseY;
blood_splat1.x = mouseX;
target1.gotoAndStop(38);
blood_c = 1;
//if (blood_splat1.currentFrame==6){
//blood_splat1.gotoAndStop(6);
if (blood_c==1){
for each(var mc:MovieClip in blood){
mc.parent.removeChild(mc);
blood.splice(blood.indexOf(mc), 1);
}
}
}
}
答案 0 :(得分:1)
编辑: 好的,这是我从测试中看到的问题。 你永远不会将blood_c设置为1,因此它永远不会移除血迹。如果你强迫它(为了测试我强迫它= 1)你将永远不会看到血液啪啪,因为它在创建后立即被移除。
所以我的建议是你第一次添加孩子(blood_splat1);你做一个计时器。或框架计数器。什么东西,当它倒计时或点火时(像计时器一样,它会调用一个功能去除血液啪啪声。就像这样:
stop();
Mouse.hide();
import flash.utils.Timer;
import flash.events.TimerEvent;
var bloodTimer:Timer = new Timer(1000, 1); // one second and doesn't repeat.
//var level_complete1:level_complete = new level_complete();
var ammo:Number = 5;
var cash:Number= 100;
var level:Number = 1;
var exp:Number = 0;
var blood_c:Number = 0;
var exp_needed = 25;
var dead_check:Number = 0; //Check to see if the target is dead
var check_blood:Number = 0; //Check to make sure blood doens't loop
var blood_splat1:blood_splat = new blood_splat();
target1.addEventListener(MouseEvent.CLICK, target_shot);
function removeBlood(te:TimerEvent):void
{
if(blood_splat1.parent != null && blood_splat1.parent.contains(blood_splat1))
{
blood_splat1.parent.removeChild(blood_splat1);
}
}
function target_shot(event:MouseEvent):void
{
if(dead_check==0)
{
addChild(blood_splat1);
bloodTimer.start();
bloodTimer.addEventListener(TimerEvent.TIMER_COMPLETE, removeBlood);
blood_splat1.y = mouseY;
blood_splat1.x = mouseX;
target1.gotoAndPlay(32);
if (blood_splat1.currentFrame==6)
{
//blood_splat1.gotoAndStop(6);
//removeChild(blood_splat1);
cash=cash+150;
exp=exp+25;
ammo=ammo-1;
dead_check = 1;
blood_c = 1;
}
}
if (dead_check==1)
{
addChild(blood_splat1);
bloodTimer.start();
bloodTimer.addEventListener(TimerEvent.TIMER_COMPLETE, removeBlood);
blood_splat1.y = mouseY;
blood_splat1.x = mouseX;
target1.gotoAndStop(38);
blood_c = 1;
//if (blood_splat1.currentFrame==6){
//blood_splat1.gotoAndStop(6);}
}
}
答案 1 :(得分:0)
沮丧和肮脏,你可以这样做(但不会删除孩子的孩子):
while (numChildren > 0) {
removeChild(getChildAt(0));
}