[flash] vloeiende beweging over scherm

Pagina: 1
Acties:

  • niXnut
  • Registratie: Februari 2001
  • Laatst online: 17-07-2020

niXnut

Hora ruit; hora est!

Topicstarter
ik wil een movieclipje at random over het scherm laten bewegen. ik heb het volgende scriptje gemaakt:

frame 1:
xuiltje = math.ceil(Math.random()*520);
yuiltje = math.ceil(Math.random()*310);

frame 2:
setProperty("uiltjeMC", _x, uitltjeMC._x = xuiltje);
setProperty("uiltjeMC", _y, uitltjeMC._y= yuiltje);

frame 3:
gotoAndPlay(1);


nu beweegt de movieclip heel snel en springerig over het scherm, logisch want hij schiet binnen de tijd van een frame naar een andere coordinaat.
Hoe kan ik dit soepeler laten verlopen?

| antec sx840 | P4 1.7 | intel 850 mv | 512Mb kingston ecc | matroxG550 | adaptec29160 | atlas 10K III 18Gb | seagate barracuda IV 40Gb | plextor 40x | Iiyama17" | w2k pro | lappie: Dell inspiron 8100 | 1,2G/512/15"/48Gb/dvdcdrw/GF2go32Mb/lan/5


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 28-08 08:57

TwoR

Gekleurde stippen

de tijd van het frame verlengen ??

  • niXnut
  • Registratie: Februari 2001
  • Laatst online: 17-07-2020

niXnut

Hora ruit; hora est!

Topicstarter
neuh, want dan sprint ie heel langzaam van links naar rechts, het is juist de bedoeling dat ie met kleine tussenstapjes naar het opgegeven coordinaat verplaatst

| antec sx840 | P4 1.7 | intel 850 mv | 512Mb kingston ecc | matroxG550 | adaptec29160 | atlas 10K III 18Gb | seagate barracuda IV 40Gb | plextor 40x | Iiyama17" | w2k pro | lappie: Dell inspiron 8100 | 1,2G/512/15"/48Gb/dvdcdrw/GF2go32Mb/lan/5


  • Arnold
  • Registratie: September 2000
  • Laatst online: 31-08 10:35
niXnut schreef op 03 september 2002 @ 15:26:
neuh, want dan sprint ie heel langzaam van links naar rechts, het is juist de bedoeling dat ie met kleine tussenstapjes naar het opgegeven coordinaat verplaatst
hoeveel fps heb je?
dan moet je dus zorgen dat ie zoveel "kleine" tussenstapjes per seconde maakt...
(lijkt me logisch??)

  • niXnut
  • Registratie: Februari 2001
  • Laatst online: 17-07-2020

niXnut

Hora ruit; hora est!

Topicstarter
ik zal proberen het wat helderder uit te leggen, het ligt namelijk niet aan het aantal fps.
ik genereer een x- en y coordinaat bijv. x340, y75
als ik dan bijvoorbeeld uit ga van startpunt x0, y0
dan springt ie binnen een frame van x0, y0 ---> x340, y75
en dan krijgt ie weer nieuwe coordinaten.
ik wil dat ie pixel voor pixel naar dat coordinaat 'toeloopt'
ik zal dus iets met 1 op moeten hogen tot ie op de coordinaten aangekomen is.
heeft dus niets (weinig) met fps te maken

| antec sx840 | P4 1.7 | intel 850 mv | 512Mb kingston ecc | matroxG550 | adaptec29160 | atlas 10K III 18Gb | seagate barracuda IV 40Gb | plextor 40x | Iiyama17" | w2k pro | lappie: Dell inspiron 8100 | 1,2G/512/15"/48Gb/dvdcdrw/GF2go32Mb/lan/5


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Je kan toch ook doen:

randomGetalX = random(10) - 5;
randomGetalY = random(10) - 5;

setProperty("mc", _x, getProperty("mc", _x)+randomGetalX);
setProperty("mc", _y, getProperty("mc", _y)+randomGetalY);

Huur mij in als freelance SEO consultant!


Verwijderd

CrashOne schreef op 03 september 2002 @ 15:49:
Je kan toch ook doen:

randomGetalX = random(10) - 5;
randomGetalY = random(10) - 5;

setProperty("mc", _x, getProperty("mc", _x)+randomGetalX);
setProperty("mc", _y, getProperty("mc", _y)+randomGetalY);
Dan blijft het de hele tijd op een heel klein oppervlak een beetje rondtrillen, hij zal nooit een lange lijn maken.

Heel simpel scriptje dat je zou kunnen gebruiken als clipevent voor een mc random movement:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
onClipEvent(load){
x=Math.random()*550;
y=Math.random()*400;
_x=Math.random()*550;
_y=Math.random()*400;
}
onClipEvent(enterFrame){
if(Math.random()*60>=56){
x=Math.random()*550;
y=Math.random()*400;
}else{
}
_x+=(x-_x)/6;
_y+=(y-_y)/6;
}

  • roytanck
  • Registratie: Oktober 1999
  • Laatst online: 07-07 09:29
onClipEvent(load){
targetx=400;
targety=400;
}
onClipEvent(enterFrame){
uiltje._x+=(uiltje._x-targetx)/20;
uiltje._y+=(uiltje._y-targety)/20;
}

Zoiets? De targetx en targety moet je ff goed invullen, maar dit geeft echt een prachtige ease-out :)

Oh ja, het kan dat je += in -= moet veranderen...

edit:
je moet trouwens wel eens in de zoveel tijd een nieuwe targetx en targety verzinnen, dus maak daar een functie van die je elke 100 frames aanroept of zo

Verwijderd

Weefselkweekje schreef op 03 september 2002 @ 16:59:
onClipEvent(load){
targetx=400;
targety=400;
}
onClipEvent(enterFrame){
uiltje._x+=(uiltje._x-targetx)/20;
uiltje._y+=(uiltje._y-targety)/20;
}

Zoiets? De targetx en targety moet je ff goed invullen, maar dit geeft echt een prachtige ease-out :)

Oh ja, het kan dat je += in -= moet veranderen...

edit:
je moet trouwens wel eens in de zoveel tijd een nieuwe targetx en targety verzinnen, dus maak daar een functie van die je elke 100 frames aanroept of zo
Tjah ik wil niet zeuren hoor maareh ;)

Verwijderd

het is de bedoeling dat de movieclip at random over het scherm beweegt. dan moet ik dus targetx en targety at random genereren?
heb ik die handlers perse nodig, je kunt dit script toch ook gewoon in een frame frotten?

  • roytanck
  • Registratie: Oktober 1999
  • Laatst online: 07-07 09:29
Verwijderd schreef op 03 september 2002 @ 20:47:
[...]

Tjah ik wil niet zeuren hoor maareh ;)
Hehe, ja ik had ff niet zo goed gelezen, beetje warrige post. Ik ben ook niet zo snel met depicated flash4 syntax... jouw ding lijkt er idd nogal op.

Voor de topicstarter:

De bedoeling was zeg maar dat je dit script aan de instance van de movieclip die moet gaan bewegen zou hangen. De stuff die in het load event staat moet alleen in een functie, en die roep je af en toe aan om een nieuw target te verzinnen.

onClipEvent(load){
function newTarget(){
targetx=550*Math.random();
targety=400*Math.random();
}
newTarget();
teller=0;
}

onClipEvent(enterFrame){
_x-=(_x-targetx)/20;
_y-=(_y-targety)/20;
if(teller%50==0){
newTarget();
}
teller++;
}

Zoiets dan?

De movieclip heeft dus geen eigen timeline (1 frame, met stop erin). De hele beweging wordt door dit script gedaan. Download het voorbeeld ff http://overkill.nob.nl/~roy/zooi/voorbeeld.fla

Succes!

Verwijderd

Zo, net terug van vakantie. Gaan we maar weer eens posten.

Kweet nie of dit of 5 of mx is, maar in mx zou ik dit de mooiste manier vinden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#initclip
randPosMc = function(){
    this.init();
};

Object.registerClass("randPosMc_id",randPosMc);
var p = randPosMc.prototype = new MovieClip();

p.init = function(){
    this.msecs = 1000;
    this.w = 550;
    this.h = 400;
    setInterval( this, "rePos",  this.msecs ); 
    this.rePos();
}

p.rePos = function(){
    this.tx = Math.random()*this.w;
    this.ty = Math.random()*this.h;
}

p.onEnterFrame = function(){
    this._x += (this.tx-this._x)/2;
    this._y += (this.ty-this._y)/2;
}

delete p;
#endinitclip


Je kan er nu zoveel spawnen als je wilt, het is snel te converteren naar een component, en het is netjes oop, en kost dus weinig mem.
Gebruikt ook minder cpu dankzij setInterval(), en ook de changes zijn framerate onafhankelijk.

B is for BACK!

Flaatje staat hier:

http://home.wxs.nl/~leeu6431/random_pos_mx.fla

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op 04 september 2002 @ 11:52:
Zo, net terug van vakantie. Gaan we maar weer eens posten.
Lekkere vakantie gehad!?

Ik zat vanochtend nog te denken waar de B-Topper gebleven was!

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

hij's cool b-top maar kan ie die bolletjes ook minder springerig over het scherm laten bewegen? kwordt er een beetje zenuwachtig van. En eigenlijk moeten de bolletjes ook nog at random groter en kleiner worden.......... ken da?

Verwijderd

Verwijderd schreef op 04 september 2002 @ 14:38:
hij's cool b-top maar kan ie die bolletjes ook minder springerig over het scherm laten bewegen? kwordt er een beetje zenuwachtig van. En eigenlijk moeten de bolletjes ook nog at random groter en kleiner worden.......... ken da?
Even uit het hoofdje:

#initclip
randPosMc = function(){
this.init();
};

Object.registerClass("randPosMc_id",randPosMc);
var p = randPosMc.prototype = new MovieClip();

p.init = function(){
this.msecs = 2000;//Aantal msecs per sprong.
this.s = 10;//Springerigheid
this.mis = 50;//Minimale schaal in procenten tov origineel
this.mxs = 100;//Maximale schaal in procenten tov origineel
this.w = 550;//Maximale x positie vanaf 0;
this.h = 400;//Maximale y positie vanaf 0;
setInterval( this, "rePos", this.msecs );
this.rePos();
}

p.rePos = function(){
this.tx = Math.random()*this.w;
this.ty = Math.random()*this.h;
this.ts = this.mis + Math.random()*this.mxs;
}

p.onEnterFrame = function(){
this._x += (this.tx-this._x)/this.s;
this._y += (this.ty-this._y)/this.s;
this._xscale = this._yscale = (this.ts-this._xscale)/this.s;
}

delete p;
#endinitclip

Verwijderd

damn he's good! zie jij nog wel eens daglicht?

Verwijderd

Best wel, maar dit ziet er nog steeds klote uit.
Toch maar een component van maken?

Verwijderd

ik snap niet wat je er niet goed aan vindt maar als je je uit wil leven, wie ben ik om je tegen te houden

Verwijderd

Heb er niet meer naar gekeken maar zie nu wel aan die code dat deze regel:

this._xscale = this._yscale = (this.ts-this._xscale)/this.s;

dit zou moeten zijn:

this._xscale = this._yscale += (this.ts-this._xscale)/this.s;

  • tie-rep
  • Registratie: Oktober 2001
  • Laatst online: 19-02 15:56

tie-rep

nu met ir. !

[semi-offtopic]
Hé B-Top,

ik zie dat je de laatste tijd lekker bezig bent met Objects en prototype.

Mijn vraag: is dat een nieuw geloof of heb je jezelf helemaal in de Flash syntax ingegraven en weet je dat dat veel voordelen oplevert tov van Mc gerelateerde actions?!
[/semi-offtopic]

Verwijderd

tie-rep schreef op 05 september 2002 @ 01:56:
[semi-offtopic]
Hé B-Top,

ik zie dat je de laatste tijd lekker bezig bent met Objects en prototype.

Mijn vraag: is dat een nieuw geloof of heb je jezelf helemaal in de Flash syntax ingegraven en weet je dat dat veel voordelen oplevert tov van Mc gerelateerde actions?!
[/semi-offtopic]
Erm, weet niet of ik de vraag helemaal begrijp, maar laat ik je dit vertellen.

Het echte oop proggen is een stuk makkelijk en ook beter ondersteund geworden in flashmx. In grote en kleine projecten is de reusability van dit soort code hoog, en is het gebruik van dergelijke objecten door designers handig.

Ik geloof niet echt dat dit een nieuw geloof is, de methode is er al een tijdje, ook voor flash.
Eerlijk gezegd denk ik dat je als serieuze flashprogger hier toch even serieus naar moet kijken, en ik denk zeker dat dit meer dan 80% van de toekomst van flash gaat representeren. Het is ook niet meer dan een logische richting als je ziet in welke richting MM flash aan het ontwikkelen is.

In MX is het echt vruchtbaar geworden om netjes oop te proggen, en ik kan dit dan ook aan iedereen aanbevelen.

Bovenstaande code is overigens sneller dan alle andere gegeven oplossen, maar dat komt door setInterval() :)

  • tie-rep
  • Registratie: Oktober 2001
  • Laatst online: 19-02 15:56

tie-rep

nu met ir. !

ik durf wel te zeggen dat ik redelijk mee kom met de actionscriptpose, maar het valt met op dat MM nog niet echt de 'harde' code aan het promoten is tov van de MC gekoppelde code.

Natuurlijk begrijp ik ook dat Objects 'beter zijn', maar het was ook een beetje de vraag hoe je op deze manier bent gaan scripten?

Dus bronnen, andere fora, of de praktische kennis en daardoor jezelf gedwongen hebt deze method te gebruiken. (iets meer tiepen, beter resultaat)

dit lijkt misschien een beetje off-topc, maar ik denk dat het zeker met bovenstaande verschillende voorbeelden, een beter inzicht geeft in de verschillende script-manieren

Verwijderd

tie-rep schreef op 05 september 2002 @ 02:26:
ik durf wel te zeggen dat ik redelijk mee kom met de actionscriptpose, maar het valt met op dat MM nog niet echt de 'harde' code aan het promoten is tov van de MC gekoppelde code.

Natuurlijk begrijp ik ook dat Objects 'beter zijn', maar het was ook een beetje de vraag hoe je op deze manier bent gaan scripten?

Dus bronnen, andere fora, of de praktische kennis en daardoor jezelf gedwongen hebt deze method te gebruiken. (iets meer tiepen, beter resultaat)

dit lijkt misschien een beetje off-topc, maar ik denk dat het zeker met bovenstaande verschillende voorbeelden, een beter inzicht geeft in de verschillende script-manieren
Dat eerste wat je zegt, van harde code enzo vat ik niet helemaal.

Erm, waar heb ik van geleerd.:
Flashforward2002 New York.
Ennuh.....AS Dictionary en een oop boek van mijn vorige manager?
Flashcoders : chattyfig.figleaf.co.uk
Eigen inzicht, en Dragon, die ik helemaal oop aan het schrijven was, en met de komst van MX werd omgedoopt naar Dragon_MX....daarmee ben ik een boel op onderzoek uitgegaan.

Denk dat ik daarmee een eind kom.
Vooral de overstap naar MX heeft OOP een stuk toegangkelijker gemaakt.
Nu kan ik dit doen voor bannertjes en andere kleine meuk. Terwijl ik in 5 dan complete OOP/Event engine ondersteunende libraries moest gaan includen waardoor de filesize hard opliep...te hard voor kleine dingen.

Verwijderd

Ik had aan hetzelfde projectje zitten te werken, mijn doel was om telkens een nieuwe random target te zetten waar het object naartoe moet. Wat ja dan doet is constant de afstand tot dat punt laten halveren en als hij daar uiteindelijk op uitkomt moet hij een nieuwe target maken. Mijn probleem was dat als je halveert, dan kom je er nooit, ook niet als je met de int() functie probeert, dan kom je er helemaal niet.
Pagina: 1