Volledige versie bekijken : animated button heen en weer
digitalecartoons
%Europe/Berlin %018 %2005, 01:27
Ik dacht aan het volgende: een animated button die werkt volgens een rollover / rollout. De button pauzeert op frame 1. Na een rollover moet er een shape tween volgen van frame 1 naar 5 en na een rollout moet alles weer terug gaan van frame 5 naar frame 1.
Het gebruik van Hittest scheen wel te werken. Maar liep al gelijk tegen een probleem op: als losse swf werkt het wel. Bijvoorbeeld als ik onderstaande code in de MC zet:
onClipEvent (enterFrame) {
if (this.hitTest( _root._xmouse,_root._ymouse, true)) {
this.nextFrame ();
} else {
this.prevFrame ();
}
}
Maar als ik 'm op een webpagina importeerd en als webpagina bekijk gaat het raar doen. De rollover werkt dan wel (hittest detecteert dat ik er met de muis overheen ga), maar als ik razendsnel de muis ervandaan haal is dat net iets te snel voor hittest: de animatie gaat niet verder met prevFrame. Eigenlijk werkt 't ook langzaam niet als de MC de hele stage beslaat. Zodra ik van het Flash object over ga op het overige gebied van de webpagina (zodra ik het Flash object dus met de muis verlaat). Hittest herkent dat blijkbaar niet.
Is daar een oplossing voor zonder b.v. de stage met een x aantal pixels te vergroten? Denk dat dat op zich weinig zal uitmaken. Als ik maar snel genoeg met m'n muis het flash object verlaat. Sneller dan de frame rate en hittest het bij kunnen houden.
Heb ik dit ook met een button die met on rollover/rollout werkt als ik bliksemsnel een rollout doe?
theFlashWizard
%Europe/Berlin %318 %2005, 08:38
volgens mij ken je hier niks aan doen.. het kan nou 1maal 1x in de zoveel tijd gecheckt worden..
en das idd precies hetzelfde probleem..
digitalecartoons
%Europe/Berlin %331 %2005, 08:57
Vraagje: je hebt dus een Button-symbol (met Up, Over, Down, Hit). Is er niet iets waarmee je de status van Up/Over/Down/Hit in een variabele vast kan leggen?
Dus bijvoorbeeld iets als:
Status = get mc.UP (true of false gevend)
if (status) then trace "muis op object"
else trace "muis niet op object
Als dat zou kunnen dan zou ik een rollout kunnen simuleren door Hitstate/on rollover/rollout te vervangen door een button symbol.
Dan maakt de snelheid van muisbewegen volgens mij niet uit. De muisbeweging (heen of terug) wordt niet gedetecteerd, maar of de muis zich wel of niet op het object bevindt.
En als ik dan in een variabele in zou kunnen lezen van:
muis nu niet op object, maar daarvoor wel
Dan zou dat betekenen dat er een rollover heeft geplaats gevonden (en omgekeerd)
Flasher
%Europe/Berlin %343 %2005, 09:14
waarom gebruik je geen onRollOver/onRollOut??
je code wordt dan:
stop();
var roll:Boolean = false
this.onRollOver = function() {
roll = true;
}
this.onRollOut = this.onDragOut = function() {
roll = false;
}
this.onEnterFrame = function() {
if(roll && this._currentframe < 5) {
this.nextFrame();
} else if(!roll && this._currentframe >1) {
prevFrame()
}
}
deze code zet je op het 1e frame van je mc
digitalecartoons
%Europe/Berlin %361 %2005, 09:39
Zou ik ook nog kunnen proberen ja. Maar blijf je dan niet het probleem houden dat wanneer je de muis snel genoeg van de Flash swf beweegt op een webpagina, het niet gedetecteerd wordt?
Flasher
%Europe/Berlin %371 %2005, 09:54
nee, volgens mij niet.
Als je de muis ervan af haalt wordt de onRollOut/onDragOut event handler 'getriggerd'
Bij het eerstvolgende frame zorgt de onEnterFrame er dan voor dat de mc weer terug gaat
digitalecartoons
%Europe/Berlin %378 %2005, 10:04
Misschien heb ik al een oplossing: het gebruik van een Button symbol. De bedoeling is dus als volgt:
Ik heb een MC van 5 frames met een tween van 1 naar 5
En een MC van 5 frames met een tween van 1 naar 5, maar waarbij de afbeeldingen dus zijn omgedraaid. Dus een "heen" effect en "terug" effect.
Als ik deze 2 MC's nu in een button symbol zet. MC2 (terug) in de UP state en MC1 (heen) in de DOWN state. Met een invisible button in de HIT state (een rechthoek net zo groot als de stage).
Dat werkt op zich wel, maar het is niet de bedoeling dat wanneer iemand de site bezoekt, de button gelijk al begint met de UP state (terug). Daarna werkt het dan verder wel (als ik de cursor op de swf zet speelt de heen-tween en van de button af, of zelfs van de flash movie helemaal af, speelt de terug-tween), maar liever heb ik het dat tijdens het bezoeken van de site en het laden ervan, de eerste UP versie overgeslagen wordt, zodat de afbeelding in z'n startpositie getoond wordt.
Nu dacht ik: als ik bij UP eerst nu eens een variable meegeef die op false staat en dat ik die als er een DOWN voorkomt naar true laat zetten. In geval van false zou dan naar het laatste frame van de UP movieclip gespronken moeten worden (terug-animatie wordt dus overgeslagen) en na een DOWN gaat de variable over op true. In geval van true en een volgende UP mag de volledige terug animatie vervolgens weer WEL getoond worden. En werkt het vervolgens zoals het hoort (down: tween heen, up: tween terug)
Als ik er zo over nadenk zou dat wel kunnen werken. Alleen, wat zou er gebeuren als er daarna een andere site bezocht werd en daarna weer terug gegaan wordt? Het flash object zal dan denk ik nog in het cache zitten, met de variabele op true. Ook als er iets als onload gebruikt wordt denk ik. En dan wordt de UP animatie alsnog gelijk getoond.
Ik zou op een of andere manier bij het bezoeken van de site, of het object zich nu in het cache bevindt of niet, de variabele moeten kunnen resetten naar false. Kan dat? B.v. iets als "wanneer de site verlaten wordt, zet variabele weer op false"?
digitalecartoons
%Europe/Berlin %411 %2005, 10:52
Nog een tutorial gevonden. Werkt inderdaad met onrollover/onrollout. Heb de voorbeeld button geprobeerd (snel heen en terug) en het blijft werken. Ik ga het vanavond even met mijn eigen button proberen.
http://www.oman3d.com/tutorials/flash/button_animation/
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.