PDA

Volledige versie bekijken : play / stop


digitalecartoons
%Europe/Berlin %925 %2005, 23:12
Zouden jullie bijgaand fla bestandje (in de Winzip file) willen bekijken? Het doet precies wat ik wil, maar weet niet waarom :)

Ik wou een animated button maken: met een rollover speelt het fragment van frame 1 tot frame 5 en vanaf frame 5 speelt het fragment weer verder d.m.v. een rollout tot frame 10 (waar alles weer in de beginstand komt).

In de Actions laag heb ik al in frame 1 een stop() gezet zodat tie niet gelijk begint met spelen. En dan nog een stop() in frame 5 zodat hij na de rollover tot aan de helft doorloopt en even pauzeert (middenstand) tot de rollover voorkomt, waarna alles weer terug shape tweened tot de frame 1 versie.

Voor die rollover/rollout functie heb ik een onzichtbare Hit button laag gemaakt.
Zal jullie wel allemaal bekend voorkomen. Begin nog maar net met Flash, dus wellicht zijn er nog makkelijkere manieren, maar ach...

Maar vroeg me dus af WAAROM het werkt zoals het werkt. Ik dacht namelijk zo: in de Actions laag staat in het eerste keyframe dus een stop(). De volgende stop() staat dus in keyframe 5. Daartussen staan dan uiteraard normale frames die de stop() van keyframe 1 overnemen.

Als ik dan in de button in frame 1 zet van play() als er een rollover voorkomt. Dan denk ik met m'n boerenverstand eerst al van (als er dan een rollover op dat moment voor komt): in frame 1 van "Buttons" staat dan play() en in frame 1 van "Actions" staat dan stop(). Schijnbaar heeft de play() van de Buttons frame 1 dan voorrang op de stop() van de Actions frame 1 als er b.v. een rollover voorkomt en gaat de animatie verder vanaf frame 2?

Daarna denk ik van, ok, er is een rollover voorgekomen dus gaat tie verder met spelen vanaf frame 2 en schakelt hij die stop() van frame 1 in Actions uit. Als hij dan op frame 2 is... dan staat er op de "normale" frame van Actions nog steeds een stop(), omdat tie die van keyframe 1 in Actions heeft overgenomen. Dan zou je juist toch zeggen dat de animatie alsnog op frame 2 zou stoppen? Totdat je weer een rollover doet en hij naar frame 3 gaat, weer een rollover naar frame 4 etc.

Of worden de actionscripts in normale frames juist altijd genegeerd tot een nieuwe actionscript in een volgend echt keyframe?

groeten,
een beginneling

Dauntless
%Europe/Berlin %960 %2005, 00:02
In dit geval: play(); heeft voorang op stop(); tenzij die er expliciet staat. Hij heeft dus voorang op de 'overgenomen' stop. En dat andere: die stop(); op frame 1 wordt direct uitgevoerd door je swf. Dan wacht hij tot er iets gebeurt... In dit geval zeg je 'play();' . Ook dat wordt dan uitgevoerd omdat stop(); alleen op die eerste moment werd uitgevoerd, en alleen dan dus stopte. Die play wordt echter nu uitgevoerd (lang na de stop(); ) dus hij begint te spelen.

Snap je? :)

digitalecartoons
%Europe/Berlin %970 %2005, 00:17
Ja bijna. De eerste in ieder geval wel: de play van frame 1 in Buttons neemt dus dus de stop van frame 1 in Actions over en heeft daar dan voorrang op. Ik heb trouwens ook al eens de stop in frame 1 van zowel de Buttons als de Animation laag gezet en het bleef werken: de play (in geval van rollover) van het HIT object in frame 1 nam de stop in frame 1 van welke laag dan ook over.

De 2e bijna: de stop in frame 1 zet alles dus even in de wachtstand. Dat volg ik nog. Maar als er dan een rollover plaats vindt en play de boel overneemt, gaat die dus verder met frame 2 en zou dan verder moeten spelen (wat tie ook doet). Maar in frame 2 van Actions staat dan nog steeds een stop (overgenomen van keyframe1). Zou dan verwachten dat hij in frame 2 alsnog stopt. Maar wacht, da's dan zeker weer een kwestie van voorrang van play op stop? Of is het dan juist zo dat actionscriptcode in non-keyframes genegeerd worden tot de volgende echte keyframe waar weer een nieuwe code in voorkomt?

Zou denken van wel: heb in plaats van play() ook wel eens gotoandplay(2) gebruikt. In de non-keyframes blijft dan wel gotoandplay(2) staan (overgenomen van keyframe1), maar toch loopt hij door tot keyframe5 (en niet dat hij vanaf nonkeyframe3 steeds blijft terugspringen naar frame2.

mateo)
%Europe/Berlin %011 %2005, 01:16
stop() geldt alleen voor het frame waarop je die functie hebt neergezet. als je een 'start() opdracht' loopt je movie of movieclip door totdat er een volgend frame met een stop() voorbijkomt.