关于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) 编辑 收藏 举报