私が描いているクリップがステージに追加されています。クリックすると、それ自体が子として2つ複製されます。これらの子をクリック可能にしたいのですが、クリックすると親クリックとその子の両方としてクリックが登録されるという問題があります。それで、2つの新しいクリップを追加するのではなく、4を追加します。movieChipにmouseChildren = falseを追加することでこれを解決できますが、それを行うと、新しいクリップは親クリップの中心からクリックされたクリップの原点。これをどうやって解決するのですか?これは私のコードです:表示リスト内のMouseEventsバブルアップ(つまりは、それらが階層的に上向きに転送されます)ので、イベントリスナーは、1つのオブジェクトのみに登録されているflash as3 mouseChildren issue
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++;
}
:だからあなたのclickCircleハンドラで、1行を追加します。あなたは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