2011-05-09 55 views
0
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); 

//这里为什么在圆形方块外面添加圆圈?addChild中的Actionscript问题

回答

1

看:

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

所以圆的中心位于0,0点,半径为30px,长方形从40,40开始,所以它的起始点比圆的两端更远。 OU cound而尝试:

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

有在矩形中间的圆。

2

因为你把你的矩形斧: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); 

你平局fnctions做工精细

+0

但我在“bin”精灵中添加了“cir”精灵。没关系。 让我知道,什么是应用x,y pos内外的差异b/w? bin.graphics.drawRoundRect(40,40,100,100,5,5); // bin.graphics.drawRoundRect(0,0,100,100,5,5); bin.x = bin.y = 40; – Benny 2011-05-10 05:03:47

2

在框外添加的原因是drawRoundRect仍然在舞台上创建了0,0的精灵,但直到40,40才开始填充。您可以通过查看bin x和y属性来查看它们,以查看它们从0,0开始并且宽度和高度属性看到它们都是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 
+0

感谢您对我的帮助 – Benny 2011-05-11 06:53:41