关于as3中删除容器字对象的问题

package {
    import dateBtn.DBtn;
   
    import flash.display.Sprite;
    import flash.events.MouseEvent;
   
    import monthBtn.MBtn;

 

    public class calendar extends Sprite
    {
        private var mCon:Sprite;
        private var dCon:Sprite;
        private var mArr:Array=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
        private var dArr:Array=[31,29,31,
                                30,31,30,
                                31,31,30,
                                31,30,31];
        private var td:uint;
        private var pmdc:uint=0;//已经显示的月份的天数,用于删除显示天数 pre month daycount
        public function calendar()
        {
            drawCon();
            addMonBtn();
        }
        private function addMonBtn():void
        {
            for(var i:uint=0;i<12;i++){
                var mb:MBtn=new MBtn(mArr[i]);
                mb.name="M"+i;
                mCon.addChild(mb);
                mb.x=i*40;
                mb.y=10;
                mb.mouseChildren=false;
                mb.buttonMode=true;   
                mb.addEventListener(MouseEvent.CLICK,addDateBtn);   
            }
        }
        private function drawCon():void
        {           
            mCon=new Sprite();
            mCon.graphics.beginFill(0xffffff,1);
            mCon.graphics.drawRect(0,0,450,30);
            mCon.graphics.endFill();
            mCon.x=10;
            mCon.y=10;
            this.addChild(mCon);
            dCon=new Sprite;
            dCon.graphics.beginFill(0xffffff,1);
            dCon.graphics.drawRect(0,0,150,80);
            dCon.graphics.endFill();   
            dCon.x=100;
            dCon.y=100;
            this.addChild(dCon);       
        }
        private function addDateBtn(e:MouseEvent):void
        {
            /* trace("删除前天数",dCon.numChildren);
            for (var a:int = 0; a < dCon.numChildren; a++) {
                var s:Sprite=dCon.getChildAt(a) as Sprite;//这一句有问题
                dCon.removeChild(s);
                s=null;
            } */
            //这儿有错误,在删除时,child的index会动态改变,所以删除函数要改变的
            //
            while (dCon.numChildren > 0)
            {
                      dCon.removeChildAt(0);
            }
            trace("删除后天数",dCon.numChildren);//应该为0的
            trace(String(e.target.name).substr(1),dArr[int(String(e.target.name).substr(1,1))]);
            pmdc=dArr[int(String(e.target.name).substr(1))];
            trace(pmdc);
            var dbY:uint;
            //加一个闰年判断和星期判断,这里省略了
            for(var i:uint=0;i<pmdc;i++)
            {
                td=i+1;
                var db:DBtn=new DBtn(String(i+1));
                dCon.addChild(db);
                //trace("天数dCon的字对象",dCon.numChildren);
                db.x=10+(i+1)%7*16;
                db.y=10+int((i+1)/7)*16;
            }
            trace("添加后天数",dCon.numChildren);
        }
    }
}

 

 

//附另外的两个对象

MBtn.as

package monthBtn
{
    import flash.display.Sprite;
    import flash.text.TextField;
   
    public class MBtn extends Sprite
    {
        private var l:TextField;
        public function MBtn(s:String)
        {
            super();
            drawShap(s);
        }
        private function drawShap(s:String="月"):void
        {
            this.graphics.beginFill(0xf0f0f0,1);
            this.graphics.drawRect(0,0,30,10);
            this.graphics.endFill();
            l=new TextField();
            l.text=s;
            l.width=30;
            this.addChild(l);
            l.x=0;l.y=0;
        }
    }
}

 

DBtn.as

package dateBtn
{
    import flash.display.Sprite;
    import flash.text.TextField;
   
    public class DBtn extends Sprite
    {
        private var l:TextField;
        public function DBtn(s:String)
        {
            super();
            drawShap(s);
        }       
        private function drawShap(s:String="月"):void
        {
            this.graphics.beginFill(0xf0f0f0,1);
            this.graphics.drawRect(0,0,10,10);
            this.graphics.endFill();
            l=new TextField();
            l.text=s;
            this.addChild(l);
            l.x=0;l.y=0;
        }
    }
}

posted on 2010-12-17 07:17  songqiuming  阅读(750)  评论(0编辑  收藏  举报

导航