d13g1d5gsf d13g1d5gsf
我是个正常的人。
关注数: 6 粉丝数: 225 发帖数: 9,616 关注贴吧数: 7
AS3.0关于Sprite赋值 我用的是FlashCS6。希望能帮到大家,顺便也给自己一个提醒。 前面这一段一样,不需要修改,如下: import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData;function buildBitmapData (w:int,h:int,color:uint=0xFF000000):BitmapData { var bitd:BitmapData = new BitmapData(w,h,true,color); return bitd; } function buildBitmap (w:int,h:int,color:uint=0xFF000000):Bitmap { var bit:Bitmap = new Bitmap(buildBitmapData(w,h,color)); return bit; } function buildFang (w:int,h:int,color:uint=0xFF000000):Sprite { var sprite:Sprite = new Sprite(); sprite.addChild (buildBitmap(w,h,color)); return sprite; } 这里开始注意了。 我一开始是这样写的: var allsp:Sprite = buildFang(50,50);var sp:Array = new Array(); sp[0] = allsp; sp[1] = allsp; sp[1].x = 60; this.addChild (sp[0]); this.addChild (sp[1]); 但是发现只有一个 Child显示出来,sp[0]和sp[1]貌似是一样的,根本没有分开的感觉。难道是数组赋值是不同的?我又试了别的还是不行。最后我才发现,Sprite的赋值跟平常的int,number等是不同的,它只当做一个对象来使用,而不是真正的赋值。不信可以试试下面的int类型的赋值,这又可以了。 var myNum:int = 0; var num:Array = new Array(); num[0] = myNum; num[1] = myNum; num[1]++; trace ("num[0] = " + num[0]); trace ("num[1] = " + num[1]); 回到原题,我做了如下修改,这就可以看到两个Sprite对象了。 var sp:Array = new Array(); sp[0] = buildFang(50,50); sp[1] = buildFang(50,50); sp[1].x = 60; this.addChild (sp[0]); this.addChild (sp[1]); 之前的allsp和sp是同一个级别的,赋值时当做指针来看待,所以要新建一个。
1 下一页