PDA

Volledige versie bekijken : Custom event wordt 2x dispatched?


mech7
%Europe/Berlin %394 %2010, 09:28
Ik luister naar...

var page:Page = new Page( {
id: this.book_xml.pages.page[number].@id,
front: this.book_xml.pages.page[number].front.@src,
back: this.book_xml.pages.page[number].back.@src,
width: book_xml.@width,
height: book_xml.@height,
segmentsH: book_xml.@segmentsH,
segmentsW: book_xml.@segmentsW,
rotationZ: rZ
});
this.book_container.addChild(page);

this.pages.push(page);

page.addEventListener(BookEvent.PAGE_START_TURN, startPageTurn);
page.addEventListener(BookEvent.PAGE_STOP_DRAG, stopPageDrag);
page.addEventListener(BookEvent.PAGE_TURNED_LEFT, pageTurnedLeft);
page.addEventListener(BookEvent.PAGE_TURNED_RIGHT, pageTurnedRight);

en in page..

this.dispatchEvent(new BookEvent(BookEvent.PAGE_TURNED_LEFT));


Maar als ik de pagina 1x heb gedraaid.. en dan de volgende pagina draai dan krijg ik het event 2x :s

mech7
%Europe/Berlin %416 %2010, 09:59
Hmmm ik zie niet dat ik een listener op de stage zet dat hij daarom 2x wordt gebruikt...

$.stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);

Is er een manier om te checken of de functie in dat object al is gezet.. aan hasEventListener heb ik niet veel in dit geval omdat hij dan helemaal niet wordt aangeroepen.. is er niet een manier als..


if($.stage.hasEventListener(MouseEvent.MOUSE_UP, this.mouseUp) === false){
$.stage.addEventListener(MouseEvent.MOUSE_UP, this.mouseUp);
}
P)

of...

$.stage.removeAllEventListeners(MouseEvent.MOUSE_U P, mouseUp);

mknol
%Europe/Berlin %540 %2010, 12:57
wat is doet het dollarteken in je code eigenlijk? Je hasEventlistener klopt niet helemaal, je kan geen callback functie mee te geven.
if (!stage.hasEventListener(MouseEvent.MOUSE_UP))
{
stage.addEventListener(MouseEvent.MOUSE_UP, this.mouseUp);
}

mech7
%Europe/Berlin %290 %2010, 06:57
wat is doet het dollarteken in je code eigenlijk? Je hasEventlistener klopt niet helemaal, je kan geen callback functie mee te geven.
if (!stage.hasEventListener(MouseEvent.MOUSE_UP))
{
stage.addEventListener(MouseEvent.MOUSE_UP, this.mouseUp);
}

umm dollar teken is een global object..

http://github.com/inruntime/AS3-Global-Object

Alleen ik heb het al gevonden.. ik verwijder nu altijd op up, en voeg toe met down.. dan werkt het ok :)