PDA

Volledige versie bekijken : onRollOut move to x77 y337


michielstax
%Europe/Berlin %887 %2008, 21:18
Ik ben bezig met een simpel bannertje waar een movieclip inzit die een mouse follow heeft als je over de banner heengaat. Nu wil ik dat als je met je muis buiten de banner komt dat die movieclip weer terugspringt (al dan niet met een ease) naar zijn oorspronkelijke coördinaten. Heb een tijdje gezocht, maar kan de oplossing niet vinden en ben zelf ook niet zo ervaren met flash. Dit is de code die ik nu heb:

import mx.transitions.Tween;
import mx.transitions.easing.*;

kader.onRollOver=function()
{
kader.button.onEnterFrame = function()
{

new Tween(kader.button, "_x", Bounce.easeOut, kader.button._x, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, kader.button._y, kader._ymouse, 0.2, true);
}
}
kader.onRollOut=boekenkast_mc.onReleaseOutside=fun ction()
{
delete kader.button.onEnterFrame;
}

Bij de actie onRollOut wil ik dus aangeven dat de movieclip .button naar x77 en y337 moet gaan. Iemand die mij hiermee kan helpen?

Dauntless
%Europe/Berlin %890 %2008, 21:23
Dan zal je moeten overstappen naar AS3. Je kan namelijk pas vanaf AS3 een event laten triggeren wanneer de muis de swf verlaat.

Een andere, iets minder goede, oplossing is om een rand aan de buitenkant van je banner te zetten en een rollOver van die rand beschouwen als het verlaten van de banner. Als je die rand te dik maakt, denkt hij te snel dat je de banner verlaat, en als hij te kort is kan het zijn dat flash de rollOver niet registreert (als je snel genoeg de banner verlaat). Het is in dat geval een beetje wikken en wegen.

michielstax
%Europe/Berlin %910 %2008, 21:51
Hey Dauntless,

Bedankt voor je antwoord. Je opmerking kan ik wel wat mee. Ga nog liever niet aan de AS3 omdat dat denk ik nog te weinig ondersteund wordt, maar je opmerking van die rand gaat wel werken denk ik (kan hem dik genoeg maken). Alleen welke code moet ik dan op die rand (heb het even 'achtergrond' genoemd) zetten? Want dit werkt niet:

achtergrond.onRollOver = function() {
this._x = kader_button._x=77;
this._y = kader_button._y=337;
}

Dauntless
%Europe/Berlin %913 %2008, 21:56
De code is correct... Als je er een trace inzet, wordt die dan getriggered ?

michielstax
%Europe/Berlin %918 %2008, 22:02
Hebbes! Nu werkt ie wel. Hartstikke bedankt. Alleen nog een vraagje: nu spring ie terug naar de coordinaten zonder ease.. en wil eigenlijk liever dat er een ease inzit. Hoe moet ik die er inbouwen? Gehele code is nu:

import mx.transitions.Tween;
import mx.transitions.easing.*;

kader.onRollOver=function()
{
kader.button.onEnterFrame = function()
{
new Tween(kader.button, "_x", Bounce.easeOut, kader.button._x, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, kader.button._y, kader._ymouse, 0.2, true);
}
}

kader.onRollOut=boekenkast_mc.onReleaseOutside=fun ction()
{
delete kader.button.onEnterFrame;
}

achtergrond.onRollOver = function()
{
kader.button.onEnterFrame = function()
{
this._x = kader_button._x=77;
this._y = kader_button._y=337;
}
}

Dauntless
%Europe/Berlin %919 %2008, 22:04
Die onEnterFrame moest je toevoegen omdat anders waarschijnlijk de andere onEnterFrame bleef lopen en hij nog altijd constant naar je muis wou springen.

Ken in je onRollOver dezelfde onEnterFrame toe als dat je in de kader.onRollOver gedaan hebt, maar ipv _xmouse en _ymouse te gebruiken als doelpositie, gebruik je de vaste positie.

michielstax
%Europe/Berlin %922 %2008, 22:08
Zo bedoel je?

import mx.transitions.Tween;
import mx.transitions.easing.*;

kader.onRollOver=function()
{
kader.button.onEnterFrame = function()
{
new Tween(kader.button, "_x", Bounce.easeOut, kader.button._x, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, kader.button._y, kader._ymouse, 0.2, true);
}
}

achtergrond.onRollOver = function()
{
kader.button.onEnterFrame = function()
{
new Tween(kader.button, "_x", Bounce.easeOut, kader.button._x=77, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, kader.button._y=337, kader._ymouse, 0.2, true);
}
}

Dan springt ie nog terug zonder ease...

Dauntless
%Europe/Berlin %925 %2008, 22:12
Dat eerste script heb je niet zelf geschreven zeker ;). (Aangezien je niet weet hoe je de Tween constructor moet aanpassen). Verwijder de 'kader.button._y =' (idem voor de _x)

michielstax
%Europe/Berlin %926 %2008, 22:14
Haha, nee.. gewoon van het forum geleend ;) Zo af en toe ben ik bezig met een website en daar wil ik dan wel wat animatie in zetten. Heb wel wat globale kennis van AS.. maar die is echt te beperkt om zelf te schrijven. Ga het ff proberen!

Edit: hmmm werkt nog niet... Dit issie nu:

import mx.transitions.Tween;
import mx.transitions.easing.*;

kader.onRollOver=function()
{
kader.button.onEnterFrame = function()
{
new Tween(kader.button, "_x", Bounce.easeOut, kader.button._x, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, kader.button._y, kader._ymouse, 0.2, true);
}
}

achtergrond.onRollOver = function()
{
kader.button.onEnterFrame = function()
{
new Tween(kader.button, "_x", Bounce.easeOut, 77, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, 337, kader._ymouse, 0.2, true);
}
}

Dauntless
%Europe/Berlin %933 %2008, 22:23
Probeer deze eens:
import mx.transitions.Tween;
import mx.transitions.easing.*;

kader.onRollOver=function()
{
kader.button.onEnterFrame = function()
{
new Tween(kader.button, "_x", Bounce.easeOut, kader.button._x, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, kader.button._y, kader._ymouse, 0.2, true);
}
}

achtergrond.onRollOver = function()
{
kader.button.onEnterFrame = null;

new Tween(kader.button, "_x", Bounce.easeOut, 77, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, 337, kader._ymouse, 0.2, true);

}

michielstax
%Europe/Berlin %936 %2008, 22:28
Hmmm.. nope. Nu schiet ie eerst naar de aangegeven coordinaten en dan meteen weer richting de muis... :(

Mss iets van een delete onEnterFrame erachter ofzo?

Dauntless
%Europe/Berlin %950 %2008, 22:48
kader.button.onEnterFrame = null is hetzelfde als 'delete kader.button.onEnterFrame'.

Kan je misschien de .fla even online zetten (of hem sturen naar mijnnickname@flashfocus.nl)

michielstax
%Europe/Berlin %953 %2008, 22:53
Heb je de .fla zojuist gemaild... Vast bedankt! Kom er echt niet uit met mijn gerommel. Haha

Dauntless
%Europe/Berlin %958 %2008, 23:00
Hij moet van de muis naar de vaste positie gaan, niet van de vaste positie naar de muis ;).

import mx.transitions.Tween;
import mx.transitions.easing.*;

kader.onRollOver=function()
{
kader.button.onEnterFrame = function()
{
new Tween(kader.button, "_x", Bounce.easeOut, kader.button._x, kader._xmouse, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, kader.button._y, kader._ymouse, 0.2, true);
}
}

achtergrond.onRollOver = function()
{
kader.button.onEnterFrame = null;

new Tween(kader.button, "_x", Bounce.easeOut, kader._xmouse, 77, 0.2, true);
new Tween(kader.button, "_y", Bounce.easeOut, kader._ymouse,337, 0.2, true);

}

michielstax
%Europe/Berlin %962 %2008, 23:06
SUPER! Hij werkt! Eigenlijk nog vrij logisch ook haha. Maargoed, hij doet het!

Bedankt, ben weer een eind op weg!