我有一個剪輯,我正在繪製並添加到舞臺上,當它被點擊時,它將自己的兩個副本添加爲兒童。我希望這些孩子可點擊,但問題是,如果他們被點擊,它會將點擊註冊爲父點擊和其子點。因此,不是添加兩個新剪輯,而是添加4.我可以通過將mouseChildren = false添加到movieClip來解決此問題,但是當我這樣做時,新剪輯從父剪輯的中心繪製,而不是從被點擊的剪輯的來源。我該如何解決這個問題?這是我的代碼:flash as3 mouseChildren問題
function clickCircle(e:MouseEvent):void {
var thisCircle = e.target;
for (var i=0; i<thisCircle.childCircles;i++){
trace('drawCircle' + i);
drawCircle(thisCircle);
}
}
function drawCircle(parentCircle){
//trace('draw circle' + childCircles);
var xPos;
var yPos;
if (circleCount == 0){
xPos = centerStageX;
yPos = centerStageY;
} else {
//xPos = parentCircle.x;
//yPos = parentCircle.y;
xPos = yPos = 0;
}
var newCircle:Shape = new Shape();
newCircle.graphics.beginFill(circleColor);
newCircle.graphics.drawCircle(0,0,cr); //x, y, radius
newCircle.graphics.endFill();
var circleClip:MovieClip = new MovieClip();
//circleClip.mouseChildren = false;
circleClip.childCircles = numCircles;
circleClip.x = xPos;
circleClip.y = yPos;
circleClip.addChild(newCircle);
circleClip.id = circleCount;
if (circleCount == 0){
addChild(circleClip);
} else {
parentCircle.addChild(circleClip);
}
circleArray.push(circleClip);
circleClip.addEventListener(MouseEvent.CLICK,clickCircle);
if (circleCount != 0){
moveCircle(parentCircle,circleClip,xPos,yPos);
}
circleCount++;
}
在附加的註釋:你應該考慮包裝這個代碼放到一個MyCircle類 - 與基於時間軸的ActionScript的是我會限制簡單'停止()'或'gotoAndPlay()'種類的程序。如果您要用ActionScript做更多工作,請查看本教程:http://www.adobe.com/devnet/flash/quickstart/creating_class_as3.html或此視頻:http://www.adobe.com/ devnet/flash/articles/first_as3_class.html – weltraumpirat
謝謝 - 會做。是的 - 這開始只是一個實驗,但它開始有點廣泛,所以我要回去重構和重組代碼。我以前從未見過stopPropagation方法,這非常有幫助。 – mheavers