Volledige versie bekijken : Array in een functie
Maaike
%Europe/Berlin %751 %2005, 19:02
hoi,
Is het mogelijk om een array in een functie te stoppen? ( Of is er een andere manier om meerdere mc's in een functie te stoppen ?):
var grootte = 15000;
var snelheid = 2;
var mc:Array = new Array ("mc1", "mc2", "mc3");
schaal(mc, grootte, snelheid);
dat werkt dus niet: Is het noodzakelijk om een for-loop te gebruiken, en waar plaats ik die in mijn functie?
var grootte = 15000;
var snelheid = 2;
var mc:Array = new Array ("mc1", "mc2", "mc3");
for (var i = 0; i<mc.length; i++){
schaal(mc[i], grootte, snelheid);
}
dat werkt ook niet.... en bovendien wordt mijn functie er niet erg handig van, een heel gedoe om die telkens aan te roepen....
Iemand een idee? :D
En hoe maak ik een array met daarin de mc's 1 t/m 400 (dus "mc1", "mc2", "mc3" enz.enz.). Ik neem aan dmv een forloop, maar ik krijg ze er niet uit... :mad:
Alvast dank ! :I
Maaike
Fl4sh3r
%Europe/Berlin %761 %2005, 19:16
Die Array van je bevat geen MC's, maar Strings. Probeer het eens op de volgende manier:
var grootte = 15000;
var snelheid = 2;
var mc:Array = new Array (mc1, mc2, mc3);
schaal(mc, grootte, snelheid);
function schaal(mcs:Array, grootte:Number, snelheid:Number) {
for(var i:Number=0; i<mcs.length; i++) {
var currentMC:MovieClip = mcs[i];
// currentMC._xscale = ...
// etc
}
}
Roenes
%Europe/Berlin %775 %2005, 19:36
Het ligt er inderdaad aan dat je strings in je array stopt. Maar was het niet handiger geweest om in dezelfde topic door te gaan aangezien deze vraag daarop aansluit :)
Maaike
%Europe/Berlin %442 %2005, 11:37
HOi
Roenes >> Ik had het prima gevonden om in dezelfde topic door te gaan, maar ik dacht dat de functie hiermee afgehandeld was, en dat het dus een nieuw onderwerp zou zijn... :o
Dat is ook net het probleem, want wanneer ik de array in de functie omschrijving zet (ipv de functie aanroep) dan verliest mijn functie zijn doel, en kan ik de functie alleen nog maar gebruiken voor die desbetreffende array.
Mijn array zou dus volgens mij net als een variabele moeten werken, en de forloop moet los staan van de functie omschrijving "schaal". maar ik weet niet of dat mogelijk is :rolleyes:
Enig idee?
Maaike :)
Roenes
%Europe/Berlin %460 %2005, 12:02
Roenes >> Ik had het prima gevonden om in dezelfde topic door te gaan, maar ik dacht dat de functie hiermee afgehandeld was, en dat het dus een nieuw onderwerp zou zijn... :o Is idd een goede reden :)
Maaike
%Europe/Berlin %568 %2005, 14:39
De bovenstaande code van Fl4sh3r werkt perfect ! :)
Nu nog hetvolgende:
Ik probeer een array te maken met daarin de mc's 1 t/m 400. (dus mc1, mc2, mc3, enz)
Maar deze wil ik niet in de functie omschrijving zetten, want dan istie niet meer variabel aan te passen.
Bijvoorbeeld zoiets:
for (i=1; i<400; i++) {
var stippen:Array = new Array (eval("stip"+i));
}
trace("mc"+i);
De trace geeft helaas alleen maar mc400 terug, vreemd, want hij mag niet groter worden dan 400 :confused:
Wanneer de forloop in een functie zit geeft ie wel alle mc's (mc1, mc2, mc3, enz) terug.
Maar dan kan ik hem niet meer los als array gebruiken (??)
Iemand een idee?
Maaike
Fl4sh3r
%Europe/Berlin %634 %2005, 16:14
var stippen:Array = new Array();
for(var i:Number = 0; i<400; i++) {
stippen[i] = _root["stip" add i];
// of stippen[i] = eval("stip" add i);
// ik zelf ben voorstander van het eerste
// _root kan bijvoorbeeld ook zijn:
// _root.mijnMC.metGenesteMC["stip" add i]
}
trace(stippen);
trace(stippen[399]);
Maaike
%Europe/Berlin %703 %2005, 17:52
Dankje Fl4sh3r, dat was wat ik nodig had :D
Alleen het werkt wel....maar ik geloof dat de processor het niet trekt. Pfoooie, ben ik dan zo lang mee bezig geweest :mad: :mad: :mad:
Het gaat namelijk om 2200 stippen (een raster van 53 x 40), die ik verschillende dingen wilde laten doen. Maar ik geloof dat flash het niet aankan...
Het leek zo simpel, maar blijkbaar is het dat niet.
Ik wil het nog proberen met gewoon animeren...... :( :(
boehoehoheoh tsjonge wat jammer, is dat normaal dat flash het niet aankan wanneer het zoveel mc's betreft :confused:
Maaike
Tommyfied
%Europe/Berlin %708 %2005, 17:59
Ja dat is normaal ... 2200 is ook wel extreem veel, kun je ze niet groeperen in bijvoorbeeld 100 groepjes van 22 mc's ofzo? Waarmee ben je eigenlijk bezig dat 2200 stippen nodig heeft, als ik vragen mag?
Maaike
%Europe/Berlin %728 %2005, 18:29
Ik wil een heel raster van stippen verschillende bewegingen laten uitvoeren:
- groter laten worden
- allemaal naar 1 punt laten gaan
- punt voor punt het raster opbouwen
- stip voor stip van kleur laten veranderen
enz.
Zou voor een cd-presentatie moeten zijn.
Ik heb de wildste beelden in mijn hoofd: ziet er fantastisch uit. :D
Maar wanneer ik ze in blokken zet, kan ik ze niet stuk voor stuk aanspreken. JAMMMMERRR.., ik had gedacht dat met AS het toch een makkie zou moeten zijn om dat te berekenen. :(
En 2200 lijkt heel veel, maar het zijn maar 40 rijen van 53 stippen, dat valt best mee, dacht ik.....
Goed, ga ik maar iets simpelers bedenken.. :(
Maaike
Tommyfied
%Europe/Berlin %757 %2005, 19:10
Dit kan wel, kijk hier (http://downloads.junioronline.us/details.php?section=2&item=28) maar eens.
kH_
%Europe/Berlin %543 %2005, 14:02
Maaike, je moet niet vergeten wanneer je zoveel MovieClips hebt op jet stage, dat de Flash Virtual Machine in een loopje IEDERE MovieClip moet verwerken, dus bepaalde functies aanroepen, de grafische weergave naar een bepaalde positie verplaatsen e.d.
MAAR....er is een truc natuurlijk om alles sneller te laten lopen, wat alleen niet werkt, wanneer al je stippen tegelijkertijd moeten bewegen. Als je nu gewoon een Array bijhoudt van Objecten, met daarin de huidige locatie en actieve status van een punt, dan kun je bij een punt wat toevallig niet beweegt, de status op 'false' zetten. Als je nu dan een MovieClip koppelt aan zo'n Object (bijvoorbeeld index 0 in Array is MovieClip met de naam 'punt0'), dan kun je bij een status false de MovieClip unloaden. Pas wanneer het punt weer moet bewegen, zet je de status op true EN moet je dus weer een nieuwe MovieClip laden, met de opgeslagen coordinaten en status.
Als je gebruik maakt van onEnterFrame, dan is een HELE effectieve manier om gewoon te zeggen: 'MovieClip.onEnterFrame=undefined'. Op die manier zal Flash die functie dus niet voor die MovieClip aanroepen, waardoor het zaakie sneller loopt.
Ik weet niet hoeveel kennis je hebt van AS, maar ik hoop dat je dit een beetje snapt. Je moet alleen wel begrijpen, dat het verwerken van zoveel punten gewoon bepaalde trucs met zich meebrengt.
Hoe meer data er verwerkt moet worden, deste trager wordt je filmpje....it's as simple as that. Pas anders de grootte van je filmpje aan en zet de kwaliteit wat lager, maarja...
MAAR....als je trouwens alleen met punten werkt, denk dan ook eens om GEEN MovieClips te gebruiken, maar simpelweg via de grafische API van Flash in AS een beetje puntjes te gaan teken. Gebruik daarvoor simpelweg een moveTo() en lineTo() commando (lijnen van 1 pixel lang en een hoge kwaliteit zien er namelijk uit als een punt:)) en sla de kleur, locatie e.d. gewoon als een Object op (je eigen custom object). Op die manier wordt de zaak een STUK sneller!!! Waarom? Omdat Flash dan geen speciale onEnterFrame() e.d. functies voor jouw MovieClips hoeft aan te roepen, je hebt dan gewoon zelf alles in de hand.
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.