PDA

Volledige versie bekijken : zelfde knop moet vaker verplaatsing uitvoeren


alexa
%Europe/Berlin %680 %2009, 16:19
Hallo,

ik heb een fotos_mc, die ik dmv 1 knop eerst naar een andere x-positie wil laten bouncen, vervolgens opnieuw dmv diezelfde knop naar nog een andere x-positie. (Die verschuiving in x-waarde mag overigens wel dezelfde waarde hebben; dus met elke klik op die knop, datti 685 pixels naar links bouncedt). Het volgende script doet dit niet. Wat moet ik hieraan veranderen, of moet ik het in een andere richting zoeken? (Ik wil dit overigens 4 keer een positieverschuiving van elke keer 685 naar links bouncen).

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

bounce = function(o:MovieClip) {
new Tween (o,"_x", Bounce.easeOut, 920, 335, 1, true);
}
bounce2 = function(o:MovieClip) {
new Tween (o,"_x", Bounce.easeOut, 335, -350, 1, true);
}
verder_mc.onRelease = function() {
if (fotos_mc._x==920) {
bounce(fotos_mc);
}
else if(fotos_mc._x==335) {
bounce2(fotos_mc);
}
}

Jan
%Europe/Berlin %706 %2009, 16:57
//fotos_mc._x=920;
verder_mc.onRelease = function() {
trace(fotos_mc._x);//<-------------------------
if (fotos_mc._x==920) {
bounce(fotos_mc);
}
else if(fotos_mc._x==335) {
bounce2(fotos_mc);
}
}


Groeten,
Jan

alexa
%Europe/Berlin %726 %2009, 17:25
Ja inderdaad, hij geeft de waarden:
920.05
335
-350

Als ik in de fla kijk, staat die fotos_mc op 920.0

Ik heb nu van de eerste gemaakt:
//fotos_mc._x=920;
verder_mc.onRelease = function() {
trace(fotos_mc._x);//<-------------------------
if (fotos_mc._x>=920) {
bounce(fotos_mc);
}
else if(fotos_mc._x==335) {
bounce2(fotos_mc);
}
}

Dus dat werk. Maar waarom geeft ie die 0.05 erbij? En hoe ga ik verder met de volgende 3 stappen?

groeten,

Alex

Jan
%Europe/Berlin %745 %2009, 17:52
Ik heb nu van de eerste gemaakt:
if (fotos_mc._x>=920)
Ofwel gebruik je mijn oplossing die er gecomment boven stond:
fotos_mc._x=920;//dus met actionscript expliciet op die waarde zetten
verder_mc.onRelease = function()
{
//...
}
en dan check je in een onMotionFinished van de volgende tweens of de andere waarden ook fout zijn en pas je hetzelfde toe.

Maar de beste en tevens gemakkelijkste oplossing is: Math.round()
verder_mc.onRelease = function() {
if (Math.round(fotos_mc._x)==920) {
bounce(fotos_mc);
}
else if(Math.round(fotos_mc._x)==335) {
bounce2(fotos_mc);
}
//etc...
}

Maar waarom geeft ie die 0.05 erbij?
http://www.flashfocus.nl/forum/showthread.php?t=49664
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_13989

Groeten,
Jan

alexa
%Europe/Berlin %872 %2009, 20:56
Hallo Jan,
ik had jouw commentaar met de slash ervoor niet als werkend bedoeld script gelezen, maar het gaat inderdaad perfect zo. Precies zoals ik het me had voorgesteld. Hartelijk dank.

Maar ik zit even naar het script te kijken, met in mijn achterhoofd jouw eerdere opmerkingen over korter scripten met een for loop. Er zitten dus vaste stappen van verplaatsing in wat ik hierboven wil, nl de mc verschuift elke keer 685 pixels naar links. Is in het script dat ik nu heb (en dat hieronder volgt) niet ergens iets korter te maken met een for loop en een -i*685?
(aan de andere kant: ik heb geprobeerd alles met 1 knop_mc af te kunnen en misschien wil een for loop nu juist weer niet). Wat zijn de mogelijkheden?

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

var positie1:Number = 920;
var positie2:Number = 335;
var positie3:Number = -350;

bounce = function(o:MovieClip) {
new Tween (o,"_x", Bounce.easeOut, positie1, positie2, 1, true);
}
bounce2 = function(o:MovieClip) {
new Tween (o,"_x", Bounce.easeOut, positie2, positie3, 1, true);
}
bouncet = function(o:MovieClip) {
new Tween (o,"_x", Bounce.easeOut, positie2, positie1, 1, true);
}
bounce2t = function(o:MovieClip) {
new Tween (o,"_x", Bounce.easeOut, positie3, positie2, 1, true);
}


fotos_mc._x=920;
verder_mc.onRelease = function() {
if (Math.round(fotos_mc._x)==positie1) {
bounce(fotos_mc);
}
else if(Math.round(fotos_mc._x)==positie2) {
bounce2(fotos_mc);
}
//etc...
}
terug_mc.onRelease = function() {
if (Math.round(fotos_mc._x)==positie2) {
bouncet(fotos_mc);
}
else if(Math.round(fotos_mc._x)==positie3) {
bounce2t(fotos_mc);
}
//etc...
}