PDA

Volledige versie bekijken : Events op children objecten


B-12
%Europe/Berlin %599 %2007, 15:23
Hallo,
Ik heb het volgende probleem, en vroeg me af of iemand mij hier misschien mee kan helpen.
Ik voeg op de volgende manier een MC toe aan een andere MC en voeg hier events aan toe:

result = new mcPlayer();
rotator = new mcRotate();
rotator.name = "rotator";
result.addChild(rotator);
result.getChildByName("rotator").visible = false;
result.addEventListener("mouseOver", showRotator);
result.addEventListener("mouseOut", hideRotator);

function showRotator(evt:Event):void{
//trace("show rotate");
evt.target.getChildByName("rotator").visible = true;
}

function hideRotator(evt:Event):void{
//trace("hide rotate");
evt.target.getChildByName("rotator").visible = false;
}

probleem is nu, dat de events ook aan de childMC toegevoegd worden, zodat ik als ik hier met mn muis over ga de volgende error krijg :
Error #1009: Cannot access a property or method of a null object reference.
Wat opzich logisch is omdat deze natuurlijk geen child "rotator" heeft.
Als ik deze als mouseChildren = false zet, gaat het wel goed, alleen dan kan ik natuurlijk geen events meer van die childMC afhandelen, en dat is wel de bedoeling, alleen andere events dan zn parent.
Weet iemand hoe ik dit goed kan regelen?

bedankt!!

theFlashWizard
%Europe/Berlin %698 %2007, 17:45
Binnen die functie kan je nog steeds de rotator variabele aanspreken als het goed is:

function hideRotator(evt:Event):void{
rotator.visible = false;
}

Een andere oplossing is om alleen het object zelf (en niet zijn kinderen) te laten reageren op de muis. Volgens mij doe je dit met de mouseChildren property.
Deze (en wanneer dit niet de goede is ook andere opties) vind je terug in de DisplayObjectContainer class. Dit is de superclass van de Sprite class en de Sprite class is weer de superclass van de MovieClip class. Dus die 2 classes "erven" die eigenschappen.

BernardV
%Europe/Berlin %705 %2007, 17:56
Misschien event.currentTarget gebruiken ipv event.target

Quote uit de live docs: "The object that is actively processing the Event object with an event listener. For example, if a user clicks an OK button, the current target could be the node containing that button or one of its ancestors that has registered an event listener for that event."

B-12
%Europe/Berlin %762 %2007, 19:17
Bedankt, met die currentTarget werkt het perfect!!