addChild / init问题

时间:2014-07-13 09:30:06

标签: actionscript-3 flash flash-builder

嘿我正在使用youtube执行“Flash Bubbles:带有TimelineMax的Paricle系统”。我得到了这段代码:

package
{
import com.greensock.*;
import com.greensock.easing.*;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;

public class main extends Sprite
{
    private var BG:bg= new bg;
    private var start_btn:start_button= new start_button;

    private  var tl:TimelineMax= new TimelineMax();
    private var bubbleMax:Number = 50;


    public function main()
    {
        stage.addChild(BG);
        stage.addChild(start_btn);

        BG.y= (stage.stageWidth)/2;
        BG.x = (stage.stageWidth)/2;
        start_btn.x = (stage.stageWidth)/2;
        start_btn.y = (stage.stageHeight)/2;
        start_btn.addEventListener(MouseEvent.CLICK,StartGame);
    }
    private function StartGame(e:Event)
    {
        stage.removeChild(BG);
        stage.removeChild(start_btn);
        createBubble();

    }

    private function createBubble()
    {
        var Bubble:bubble= new bubble();
        Bubble.y=200;
        Bubble.x= randomRange(50,1100);
        Bubble.alpha= .5;
        addChild(Bubble);
    }


    private function randomRange(min:Number,Max:Number):Number
    {
        return min + (Math.random() * (Max - min));
    }

    private function init() 
    {
        for (var count:Number = 0; count<bubbleMax; count++)
        {
            createBubble();
        }
    }
    init();
}

}

bg,start_button和bubble都是flash中制作的影片剪辑(并被赋予了as3类) 我方面有50个泡泡,但只能看到一个......感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

将StartGame功能更改为:

private function StartGame(e:Event)
{
    stage.removeChild(BG);
    stage.removeChild(start_btn);
    // Your init function is where you're creating all the bubbles. That's what the "for" loop is doing.
    init();
}

另外,不要调用init();就像你正在做的那样。您的代码看起来应该更像这样:

package
{
    import com.greensock.*;
    import com.greensock.easing.*;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;

    public class main extends Sprite
    {
        private var BG:bg= new bg();
        private var start_btn:start_button= new start_button();

        private  var tl:TimelineMax= new TimelineMax();
        private var bubbleMax:Number = 50;


        public function main()
        {
            stage.addChild(BG);
            stage.addChild(start_btn);

            BG.y= (stage.stageWidth)/2;
            BG.x = (stage.stageWidth)/2;
            start_btn.x = (stage.stageWidth)/2;
            start_btn.y = (stage.stageHeight)/2;
            start_btn.addEventListener(MouseEvent.CLICK,StartGame);
        }

        private function StartGame(e:Event)
        {
            stage.removeChild(BG);
            stage.removeChild(start_btn);
            init();
        }

        private function createBubble()
        {
            var Bubble:bubble= new bubble();
            Bubble.y=200;
            Bubble.x= randomRange(50,1100);
            Bubble.alpha= .5;
            addChild(Bubble);
        }

        private function randomRange(min:Number,Max:Number):Number
        {
            return min + (Math.random() * (Max - min));
        }

        private function init() 
        {
            for (var count:Number = 0; count<bubbleMax; count++)
            {
                createBubble();
            }
        }
    }

}