addChild中的Actionscript问题

时间:2011-05-09 13:29:47

标签: flash actionscript-3 flash-cs4 flash-cs5

import flash.display.Sprite;

var bin:Sprite = new Sprite();
var cir:Sprite = new Sprite();

cir.graphics.beginFill(0x00ff00,1);
cir.graphics.drawCircle(0,0,30);
cir.graphics.endFill();

bin.graphics.beginFill(0xff0000,1);
bin.graphics.drawRoundRect(40,40,100,100,5,5);
bin.graphics.endFill();
addChild(bin);
bin.addChild(cir);

//为什么在方框外添加圆圈?

3 个答案:

答案 0 :(得分:2)

因为你添加了一个x:40 / y:40的矩形,但你的圆圈是x:0 / y:0

var bin:Sprite = new Sprite();
var cir:Sprite = new Sprite();

cir.graphics.beginFill(0x00ff00,1);
cir.graphics.drawCircle(40,40,30);
cir.graphics.endFill();

bin.graphics.beginFill(0xff0000,1);
bin.graphics.drawRoundRect(40,40,100,100,5,5);
bin.graphics.endFill();
addChild(bin);
bin.addChild(cir);

工作正常

答案 1 :(得分:2)

它被添加到框外的原因是drawRoundRect仍然在舞台上创建0,0精灵,但直到40,40才开始填充。您可以通过追踪bin x和y属性来查看它们,看它们是从0,0和width and height属性开始看到它们都是100而不是60.你可能会更好地从0绘制所有对象, 0,然后只需调整父DisplayObject,如下所示:

import flash.display.Sprite;

var bin:Sprite = new Sprite();
var cir:Sprite = new Sprite();

bin.graphics.beginFill(0xff0000,1);
bin.graphics.drawRoundRect(0,0,60,60,5,5);
bin.graphics.endFill();

cir.graphics.beginFill(0x00ff00,1);
cir.graphics.drawCircle(0,0,30);
cir.graphics.endFill();

addChild(bin);
bin.addChild(cir);
bin.x = bin.y = 40; //move the parent object, all child objects will move with it

答案 2 :(得分:1)

看看你的绘画作品:

drawCircle(x, y, radius)
drawRoundRect(x, y, width, height...)

因此,圆的中心位于0,0点,半径为30px,矩形从40,40开始,因此它比圆形末端开始得更远。 你应该尝试:

drawCircle(90, 90, radius)
drawRoundRect(40, 40, 100, 100...)

在矩形中间有一个圆圈。