31. august 2003 - 11:03
Der er
16 kommentarer og 2 løsninger
random bevægelse bliver inden for mc
fortsættelse af
http://www.eksperten.dk/spm/330253 mat og legende's movieclip bevæger sig random rundt på skærmen.
Hvordan nu, hvis de kun må bevæge sig inden for et afgrænset område Fx. man har et mc på 200 x 400 px , inde i mc'et ligger 2 andre mc'er der bevæger sig random rundt, men man vil gerne at de bliver indefor rammerne af det mc de ligger i (i dette tilfælde inden for 200 * 400 px)
håber det er til at fortå :> Gizom
Annonceindlæg fra Computerworld
31. august 2003 - 11:12
#1
If (nyposx>0 && nyposx<200 && nyposy>0 && nyposy <400) { mc1._x = nyposx mc1._y = nyposy } /per
31. august 2003 - 11:32
#2
Du kan få min til at vende om, når den når kanten :) onClipEvent(load) { vinkel -= random(360); hast = 5; function findVinkel() { tal = random(10); hv = random(2); } findVinkel(); } onClipEvent(enterFrame) { vinkel += (hv == 0 ? -tal : tal); _y -= (Math.cos((Math.PI/180)*vinkel))*hast; _x += (Math.sin((Math.PI/180)*vinkel))*hast; frame++; if(frame == 25) { findVinkel(); frame = 0; } if(_x < 0) vinkel = 90; if(_x > 400) vinkel = 270; if(_y < 0) vinkel = 180; if(_y > 200) vinkel = 0; }
31. august 2003 - 11:58
#3
31. august 2003 - 12:08
#4
I mit bud, vælges der hele tiden en ny værdi, der ligger mellem 0 og 299. Det sker i linien: pick(random(maxStage_x), random(maxStage_y)); ..hvor variablerne maxStage_x og maxStage_y er sat til 300, dem kan du bare ændre som du har lyst. Hvis du så skal lidt ind på scenen, altså f.eks have en værdi mellem 100 og 200, sætter du max til 100 og ligger 100 til: maxStage_x = 100; værdi = random(maxStage_x)+100; Håber det hjælper lidt. mvh mat
31. august 2003 - 12:10
#5
hehe, "mc mat" - yo yo der dér :)
31. august 2003 - 12:12
#6
du skal bare ændre tallene, udfra centrum i det movieclip, den ligger i if(_x < -100) vinkel = 90; if(_x > 100) vinkel = 270; if(_y < -200) vinkel = 180; if(_y > 200) vinkel = 0; (o;
31. august 2003 - 12:51
#7
legende.dk fik jeg til at virke, men jeg vil også lige have mc_mat til at virke og det sker nok når jeg forstår det: mc_main er 200 px wide og 400 px h. mc_mat er 50 * 50 px align i center hvad er det jeg gør galt her: onClipEvent (load) { ease = 5; //hastighed maxStage_x = 175; //mc_main width - 25 (havldelen mc_mat) maxStage_y = 375; //mc_main heigth - 25 (havldelen mc_mat) værdi = random(maxStage_x)+100; function pick(ran_x, ran_y) { new_x = ran_x; new_y = ran_y; } pick(random(maxStage_x), random(maxStage_y)); } onClipEvent (enterFrame) { dist = Math.sqrt( ((new_x - this._x)*(new_x - this._x)) + ((new_y - this._y)*(new_y - this._y)) ); this._x += (new_x - this._x)/ease; this._y += (new_y - this._y)/ease; if (dist < 1) pick(random(maxStage_x), random(maxStage_y)); }
31. august 2003 - 13:26
#8
onClipEvent (load) { ease = 5; //hastighed maxStage_x = 150; // 150 fordi random(150) giver et tal mellem 0 og 149 + 25 (bredden af mc) maxStage_y = 350; // likewise offset = 25; function pick(ran_x, ran_y) { new_x = ran_x; new_y = ran_y; trace("x : " + new_x + " ...... y : " + new_y); } pick(random(maxStage_x)+offset, random(maxStage_y)+offset); // plus vores offset } onClipEvent (enterFrame) { dist = Math.sqrt( ((new_x - this._x)*(new_x - this._x)) + ((new_y - this._y)*(new_y - this._y)) ); this._x += (new_x - this._x)/ease; this._y += (new_y - this._y)/ease; if (dist < 1) { pick(random(maxStage_x)+offset, random(maxStage_y)+offset); } } Det skulle gøre det :)
31. august 2003 - 18:11
#9
nej mat den suser stadigvæk rundt! Værdierne kommer ikke over det tilladte men det er ligesom at mc_mat har et andet udgangs punkt end det andet mc.. Hummm...???
31. august 2003 - 19:13
#10
nej de har det samme udgangspunkt nemlig 0,0 i parent mc´et, som sidder smack in the middle. Hvis du rykker registreringpunktet til 0,0 istedet vil det virke fint (det vil legendes ikke, så det skal modificeres ;) if(_x < 25) vinkel = 50; if(_x > 175) vinkel = 325;//270; if(_y < 25) vinkel = 180; if(_y > 375) vinkel = 0; noget i den stil :) mvh mat
03. september 2003 - 15:19
#11
lukketid ?
03. september 2003 - 15:43
#12
ja det er det vel! Jeg fik dog ikke mat's til at virke og det er lidt ærgeligt for mat's bevæger sig på en anden måde end legende's men jeg kan sgu ikke få den til at blive inden for mc'et
03. september 2003 - 16:01
#13
Det er fordi mat glemmer at tage hensyn til hans eget udsagn om at udgangspunktet er i midten af MC'et... Du skal bare lige ændre disse linier: new_x = ran_x-75-_width/2; new_y = ran_y-175-_width/2; i functionen pick() mvh legende.dk (o;
03. september 2003 - 16:41
#14
næ jeg gør da ej, jeg har forklaret hvordan man retter det i 31/08-2003 19:13:45, og jeg har endda korrigeret dit til at passe med ændringerne ;)
03. september 2003 - 16:41
#15
og svar even :)
03. september 2003 - 17:06
#16
Men det må jo være hensigtsmæssigt at udforme scriptet så det er i overensstemmelse med spørgerens udgangspunkt, ikke sandt (o; (hi hi)
03. september 2003 - 22:16
#17
Jeg har nu alignet alle mine mc i øverste venstre hjørne og nu virker mat's helt perfekt og legende.dk dine mc er ude af området så det må jo være et eller andet med hvordan mc'et er alignet! Jeg deler point imellem jer som tak for kampen, håber det er OK?
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.