2011-10-27 75 views
0

第一次海报,长时间阅读。 我一直在解决这个问题。我一直被困在我的游戏中4个小时,搜索并试图找出如何去做。 我有一个游戏,我添加一些卡通蚂蚁,当他们被点击时,他们需要从舞台上删除。有4种不同类型的蚂蚁,所以即时通过Math.random选择要添加哪一种。 (蚂蚁1 + 2 + 3具有50%的机会产卵和第四50%)动态删除影片剪辑

rnd_nbr = (Math.random() * 5)+1; 

我有一个计时器做10蜱,以及i重置计时器,使无休止。 然后,我有一个随机数学,如果句子添加麦克'从Tweener移动舞台,和点击事件监听器。 但我无法弄清楚如何删除他们点击。 我在click_candy_anty函数中做了很多失败的尝试。 我已将他们留下评论。

我对abit凌乱的编码表示歉意,但是它会在(希望)它能够正常工作时被清除。

帮助受到高度赞赏。

import caurina.transitions.Tweener; 

var ant_index:Array = new Array(10); //index for ants 
var ant_number:int; 
var ant_temp:int; 
var rnd_nbr:int;      //var for rnd number 
var score:int = 0; 
var score_update:String; 
var reset_timer:Boolean = false; 
var antTimer:Timer = new Timer(800,10); //timer 
antTimer.addEventListener(TimerEvent.TIMER, create_ant); 

var anty0_:anty_0;       //creating ant vars for all 5 kind 
var anty1_:anty_1;       
var anty2_:anty_2; 
var anty3_:anty_3; 
var anty4_:anty_4; 
var screen_number:int = 0; 

var antyArray:Array = new Array(10); 

var main:main_mc = new main_mc; 
main.x = 0; //0,0 
main.y = 0; 
addChild(main); 

var score_format:TextFormat = new TextFormat(); 
score_format.size = 25; 
score_format.align = TextFormatAlign.CENTER; 

var score_txt:TextField = new TextField(); 
score_txt.defaultTextFormat = score_format; 
score_txt.text = "" + score; 
score_txt.x = 600; 
score_txt.y = 20; 
score_txt.border = true; 
score_txt.autoSize = TextFieldAutoSize.LEFT ; 
score_txt.height = 40; 
addChild(score_txt); 

var score_txt_update:TextField = new TextField(); 
score_txt_update.defaultTextFormat = score_format; 
score_txt_update.text = "0"; 
score_txt_update.x = 550; 
score_txt_update.y = 20; 
score_txt_update.border = true; 
score_txt_update.autoSize = TextFieldAutoSize.LEFT ; 
score_txt_update.height = 40; 
score_txt_update.alpha = 0; 
addChild(score_txt_update); 

function click_candy_anty(event:MouseEvent):void{ 
    if (score < 20){ 
    //trace("evt: " + evt); 
    //this.removeChild(); 
    //this.removeChild(this); 
    //removeChild(evt.currentTarget); 

    //removeChild(evt.target.name.substr(7)); 
    //removeChild(this); 
    //removeChild(evt.currentTarget.name); 


// trace("The " + evt.target.label + " button was clicked"); 
// trace(evt.type) 

    score++; 
    score_txt.text = "" + score; 
    //score_update = "+1"; 
    score_txt_update.text = "+1"; 
    //ori position x:570 y:20 
    score_txt_update.y = -30; 
    Tweener.addTween(score_txt_update, {y: 20, alpha: 1, time: 0.8, transition:"linear", onComplete:score_txt_update_fade}); 
    } 
    else { 
     stop_game(); 
     trace("48"); 
    } 
} 

function score_txt_update_fade(Event = null){ 
    Tweener.addTween(score_txt_update, {y: 50, alpha: 0, time: 0.4, transition:"linear"}); 
} 

function click_leaf_anty(Event = null):void{ 
    if (score > 0 && score < 20){ 
    score--; 
    score_txt.text = "" + score; 
    score_txt_update.text = "-1"; 
    score_txt_update.y = 50; 
    Tweener.addTween(score_txt_update, {y: 20, alpha: 1, time: 0.4, transition:"linear", onComplete:score_txt_update_fade_neg}); 
    trace("12 wrong"); 
    } 
/*  else { 
     stop_game(); 
     trace("12"); 
     trace("score: " + score + ", "); 
    }*/ 
} 

function score_txt_update_fade_neg(Event = null){ 
    Tweener.addTween(score_txt_update, {y: -30, alpha: -1, time: 0.8, transition:"linear"}); 
} 

//screen1(); 
start_timer(); 

function screen1(Event = null):void { 
    screen_number = 2;//slet når event listener til scr1 kommer 
    if (screen_number == 2){ 

    } 
    else { 
    screen_number = 2; 

    } 
} 

function screen2(Event = null):void { 

    if (screen_number == 3){ 

    } 
    else { 
    screen_number = 3; 
    } 
    start_timer(); 
} 

function start_timer(Event = null):void { 
    if (score < 20) { 
     if (reset_timer == false){ 
      antTimer.start(); 
      //trace("antTimer initialized"); 
     } 
     if (reset_timer == true){ 
      antTimer.reset(); 
      antTimer.start(); 
      //trace("antTimer RESETTED & initialized"); 
     } 
    } 
    else { 
     stop_game(); 
     trace("57"); 
    } 

} 

function stop_game(Event = null):void { 
    if (screen_number != 2){ 
     screen_number = 2; 
    trace("Game completed - launching end screen"); 
    // move to next screen 
     for (var i:Number=0; i<=9;i++){ 

    ant_temp = ant_number; 

    if (ant_temp < 9) { 
     //trace("ant_temp er lavere end 9::: " + ant_temp); 
     ant_temp++; 

    } 
    else if (ant_temp == 9) { 
     //trace("ant_temp lig med 9::: " + ant_temp); 
     ant_temp = 0; 
    } 

    if (ant_index[ant_temp] == 1){ 
      //removeChild(anty1_); 
      if ("anty1_" + ant_temp != null){ 
      removeChild(getChildByName("anty1_" + (ant_temp))); 
       } 
     } 
     if (ant_index[ant_temp] == 2){ 
      //removeChild(anty2_); 
      if ("anty2_" + ant_temp != null){ 
      removeChild(getChildByName("anty2_" + (ant_temp))); 
       } 
     } 

     if (ant_index[ant_temp] == 3){ 
      //removeChild(anty3_); 
      if ("anty3_" + ant_temp != null){ 
      removeChild(getChildByName("anty3_" + (ant_temp))); 
       } 
     } 

     else if (ant_index[ant_temp] == 4){   
      //removeChild(anty4_); 
      if ("anty4_" + ant_temp != null){ 
      removeChild(getChildByName("anty4_" + (ant_temp))); 
       } 
     } 
      }//for loop end 
      screen3(); 
    } 
} 

function screen3 (Event = null):void{ 
    var end:end_mc = new end_mc; 
    end.x = 0; //0,0 
    end.y = 0; // 
    addChild(end); 
} 

function create_ant(Event = null):void { 
    //trace("antTimer triggered"); 
if (score < 20) { 
     rnd_nbr = (Math.random() * 5)+1; 
     ant_index[ant_number] = rnd_nbr; 

     trace("ant_number" + ant_number); 
     //trace("ant_index[" + ant_number + "]: " + ant_index[ant_number]); 
     if (ant_index[ant_number] == 1){ 
      anty1_ = new anty_1(); 
      anty1_.name = "anty1_" + (ant_number); 

      anty1_.height = 118; 
      anty1_.width = 102; 
      anty1_.x = 100; 
      anty1_.y = 300;   
      addChild(anty1_); 
      Tweener.addTween(anty1_, {x: 541, time: 3, transition:"linear"}); 
      anty1_.addEventListener(MouseEvent.MOUSE_DOWN, click_candy_anty); 
      //trace("anty1_" + ant_number); 
      //trace("" + anty_1[ant_number].name); 

     } 
     if (ant_index[ant_number] == 2){ 
      anty2_ = new anty_2(); 
      anty2_.name = "anty2_" + (ant_number); 
      anty2_.height = 118; 
      anty2_.width = 102; 
      anty2_.x = 100; 
      anty2_.y = 300;   
      addChild(anty2_); 
      Tweener.addTween(anty2_, {x: 541, time: 3, transition:"linear"}); 
      anty2_.addEventListener(MouseEvent.MOUSE_DOWN, click_candy_anty); 
      //trace("anty2_" + ant_number); 
     } 

     if (ant_index[ant_number] == 3){ 
      anty3_ = new anty_3(); 
      anty3_.name = "anty3_" + (ant_number); 
      anty3_.height = 118; 
      anty3_.width = 102; 
      anty3_.x = 100; 
      anty3_.y = 300;   
      addChild(anty3_); 
      Tweener.addTween(anty3_, {x: 541, time: 3, transition:"linear"}); 
      anty3_.addEventListener(MouseEvent.MOUSE_DOWN, click_candy_anty); 
      //trace("anty3_" + ant_number); 
     } 

     else if (ant_index[ant_number] > 3 && ant_index[ant_number] < 7){ 
      anty4_ = new anty_4(); 
      anty4_.name = "anty4_" + (ant_number); 
      anty4_.height = 118; 
      anty4_.width = 102; 
      anty4_.x = 100; 
      anty4_.y = 300;   
      addChild(anty4_); 
      Tweener.addTween(anty4_, {x: 541, time: 3, transition:"linear"}); 
      anty4_.addEventListener(MouseEvent.MOUSE_DOWN, click_leaf_anty); 
      //trace("anty4_" + ant_number); 
     } 

    ant_temp = ant_number; 
    if (ant_temp < 9) { 
     //trace("ant_temp er lavere end 9::: " + ant_temp); 
     ant_temp++; 

    } 
    else if (ant_temp == 9) { 
     //trace("ant_temp lig med 9::: " + ant_temp); 
     ant_temp = 0; 
    } 

    if (ant_index[ant_temp] == 1){ 
      //removeChild(anty1_); 
      removeChild(getChildByName("anty1_" + (ant_temp))); 
     } 
     if (ant_index[ant_temp] == 2){ 
      //removeChild(anty2_); 
      removeChild(getChildByName("anty2_" + (ant_temp))); 
     } 

     if (ant_index[ant_temp] == 3){ 
      //removeChild(anty3_); 
      removeChild(getChildByName("anty3_" + (ant_temp))); 
     } 

     else if (ant_index[ant_temp] == 4){   
      //removeChild(anty4_); 
      removeChild(getChildByName("anty4_" + (ant_temp))); 
     } 


/* if (ant_number == 9) { //resets the ant_number - being the end of the 10th ant 
      ant_number = 0; 
      start_timer();  // launches the timer again 
      trace("Timer resetted"); 

      for (var i:Number=0; i<=9;i++){ 

     if (ant_index[i] == 1){ 
      //removeChild(anty1_); 
      removeChild(getChildByName("anty1_" + (i))); 
     } 
     if (ant_index[i] == 2){ 
      //removeChild(anty2_); 
      removeChild(getChildByName("anty2_" + (i))); 
     } 

     if (ant_index[i] == 3){ 
      //removeChild(anty3_); 
      removeChild(getChildByName("anty3_" + (i))); 
     } 

     else if (ant_index[i] == 4){    
      //removeChild(anty4_); 
      removeChild(getChildByName("anty4_" + (i))); 
     } 
      }//for loop end 

    }//ends if=9 reset*/ 
    if (ant_number == 9) { //resets the ant_number at 10th ant, and restarts the timer 
     ant_number = 0; 
     reset_timer = true; 
     start_timer(); 
    } 
    else { 
     ant_number++; 
    } 

    /*else { 
     ant_number++; 
    }*/ 
    } 
    else if (score >= 20 && screen_number != 2){ 
     stop_game(); 
     trace("14"); 
    } 
} //create_ant func end 

回答

0

您还可以使用:

removeChild(evt.currentTarget as DisplayObject); 

或者

var clicked_ant:DisplayObject = evt.currentTarget as DisplayObject; 
removeChild(clicked_ant); 
0

假设你已经创建了一个蚂蚁类,你可以有这样的事情

private function init():void 
{ 
     this.addEventListener(MouseEvent.CLICK , clickHandler); 
} 

private function clickHandler(event:MouseEvent):void 
{ 
     this.removeEventListener(MouseEvent.CLICK , clickHandler); 

     if(this.parent != null) 
      this.parent.removeChild(this); 
} 
+0

Ye,理想情况下,一个班最好。我应该计划在我开始时更好地升级,而不是刚开始。但我得到它与这一行工作:removeChild(getChildByName(evt.currentTarget.name)); – Djensen