簡體   English   中英

flash as3 mouseChildren問題

[英]flash as3 mouseChildren issue

我有一個剪輯,我正在繪制並添加到舞台上,當它被點擊時,它會添加兩個作為孩子的副本。 我希望這些孩子可以點擊,但問題是,如果點擊它們,它會將點擊注冊為父點擊及其子點擊。 因此,不是添加兩個新剪輯,而是添加4.我可以通過將movieChildren = false添加到movieClip來解決這個問題,但是當我這樣做時,新剪輯是從父剪輯的中心繪制的,而不是從單擊剪輯的原點。 我該如何解決這個問題? 這是我的代碼:

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++;
}

事件偵聽器僅注冊到一個對象,但是它從子節點接收click事件,因為MouseEvents在顯示列表中冒泡(即它們在層次結構中向上轉發),因此每個相應的父對象將接收事件,甚至舞台。

要阻止這種情況發生,您必須明確停止事件的傳播。 ActionScript事件有兩種方法:

stopPropagation

==>阻止事件在以后的執行節點(即currentTarget 之后的其他對象)中被接收,但允許同一對象內的其他偵聽器觸發。

stopImmediatePropagation

==>在收到活動時停止活動,無論其他人在聽什么。

除非你打算做其他事情而不是代碼中的內容,否則這些都應該可以正常工作。 所以在你的clickCircle處理程序中,添加一行:

function clickCircle(e:MouseEvent):void {

    // --- This should stop the event from bubbling up in the display list
    e.stopPropagation();

    var thisCircle = e.target;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM