Domanda

Ciao a tutti, il mio problema oggi è che ho un paio di pulsanti che scorrono su e giù, quando nello stato su aggiungo un grafico X per simboleggiare un pulsante di chiusura. Tuttavia, la grafica X sembra bloccare la mia azione del pulsante.

 alt text
(fonte: flickr.com )

Ho un esempio nel film Ho lavorato su > < !> gt; qui < < . Ci sono 2 film qui, quello grande se fai clic su una delle schede blu vedrai di cosa sto parlando, viene visualizzato il pulsante X, ma facendo clic sull'area X non si abbassa il pulsante. Devi fare clic sull'area del pulsante blu per rilasciare nuovamente il pulsante.

Ora ho realizzato un filmato di prova più piccolo aggiungendo il pulsante X sostanzialmente nello stesso modo e se noterai che funziona bene (si animerà a destra anche se fai clic sull'immagine X)

Ecco il mio codice nel film Big (ho nascosto il codice dell'interpolazione in modo che non sia così lungo):

function handleButtonClick(event:MouseEvent):void {
var button:MovieClip=event.target as MovieClip;
var id:Number=Number(button.name.split("button")[1]);

dispatchEvent(new CustomEvent(CustomEvent.PAUSE_MOVIE, {}));

if (! $btn1&&! $btn2) {
    if (storeButton2==buttons[id]) {
        closeTabX.x = buttons[1].width - (closeTabX.width + 10);
        closeTabX.y=buttons[1].height/2-15;
        buttons[1].addChild(closeTabX); // X added here
        $btn2=true;
        $btn1=false;
    } else if (storeButton1 == buttons[id]) {
        closeTabX.x = buttons[0].width - (closeTabX.width + 10);
        closeTabX.y=buttons[0].height/2-15;
        buttons[0].addChild(closeTabX); // X added here
        $btn1=true;
        $btn2=false;
    }
} else if ($btn1 && !$btn2) {
    if (storeButton2==buttons[id]) {
        buttons[0].removeChild(closeTabX); // X removed here
        buttons[1].addChild(closeTabX); // X added here
        $btn2=true;
        $btn1=false;
    } else if (storeButton1 == buttons[id]) {
        buttons[0].removeChild(closeTabX); // X removed here
        $btn1=false;
    }
} else if ($btn2 && !$btn1) {
    if (storeButton2==buttons[id]) {
        buttons[1].removeChild(closeTabX);
        $btn2=false;
    } else if (storeButton1 == buttons[id]) {
        buttons[1].removeChild(closeTabX); // X removed here
        buttons[0].addChild(closeTabX); // X added here
        $btn1=true;
        $btn2=false;
    }
}

}

Ora ecco il codice nel mio filmato di prova di base:

var blueButton:MovieClip;
var closeBtnX:MovieClip;

blueButton = new BlueButton;
blueButton.buttonMode = true;

closeBtnX = new CloseTabX;
closeBtnX.x = blueButton.width/2 - closeBtnX.width;

addChild(blueButton);


blueButton.addEventListener(MouseEvent.MOUSE_UP, specialClick);

function specialClick(event:MouseEvent):void
{
  blueButton.addChild(closeBtnX); // X added here
  blueButton.x = blueButton.x+10;
}

Non capisco perché non puoi fare clic sulla X nell'esempio principale per chiudere la scheda, ma puoi nel mio piccolo film di base? Pensieri, idee?

È stato utile?

Soluzione

non hai pubblicato come stai istanziando 'closeTabX' nel primo esempio, è la stessa classe dell'esempio più piccolo (CloseTabX)?

Una semplice 'correzione' è che se imposti le sue proprietà come segue, non bloccherà gli eventi del mouse al suo genitore:

closeTabX.mouseEnabled = false;
closeTabX.mouseChildren = false;

Se quella classe non è mai intesa come target del mouse, è anche possibile impostare queste proprietà nel costruttore della classe per impedire a qualsiasi istanza di quella classe di bloccare gli eventi del mouse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top