26. marts 2002 - 22:52Der er
12 kommentarer og 1 løsning
MC som genbruges (haj-spm) - random
Jeg har et MC, som indeholder et stykke grafik som fader ind og ud (alpha 0-100 og 100-0, motiontweening) .(MC'et looper ikke, dvs. det fader kun 1 gang!)
Jeg vil gerne have at MC'et kopierer sig selv med tilfældige tidsintervaller, flere kopierer oveni hinanden og tilfældigt placeret indenfor et område på 50x50 pixels. Derudover skal kopierne også være i tilfældige farver fra et udvalg på 4 farver...
Kan det lade sig gøre og hvis ja hvordan gør jeg det??
//tildel farven til et mc som hedder "mitClip" colorObj = new Color("mitClip"); colorObj.setRGB(randomColor);
Dersom alle dine MC'er skal opføre sig identisk, er det lettest at bruge duplicateMovieClip() med passende intervaller. Du skal dog være opmærsom på at det hurtigt bliver for tungt hvis du ikke sætter en øvre grænse for hvor mange kopier der må være til stede. Hvis du gerne vil kunne forsætte kopiering skal du i det mindste sørge for at removeMovieClip() igen når de er x antal sekunder gamle.
Her er hele koden for en master MC som skal duplikeres og slettes igen når der er 20 kopier.
master mc'en hedder "wave" og befinder sig på hovedtidslinien
onClipEvent(load) {
//initialiser maxTimeToNextCopy = 3000; newCopyTime = getTimer()+ random(maxTimeToNextCopy); McCount = 0; maxMcCount = 20; //tillad kun 20 mc kopier
//find en farve blandt følgende liste farver = ["225533","0000FF","336633","FFFFFF"]; randomColorString = farver[random(farver.length)]; //konverter strengen til HEX farve randomColor = parseInt(randomColorString,16);
//tildel farven til dette mc colorObj = new Color(this); colorObj.setRGB(randomColor);
function newMC(); McCount ++; if (McCount > 20) { //fjern den ældste mc oldestCount = McCount-maxMcCount; removeMovieClip(_parent["wave"+ oldestCount]); } // kopier ny this.duplicateMovieClip("wave"+McCount,McCount); newCopyTime = getTimer()+ random(maxTimeToNextCopy); } }
onClipEvent(enterFrame) { //lad kun masterMCen lave kopier if (this == _level0.wave) { if (getTimer() > newCopyTime ) { newMC(); }
//initialiser maxTimeToNextCopy = 3000; newCopyTime = getTimer()+ random(maxTimeToNextCopy); McCount = 0; maxMcCount = 20; //tillad kun 20 mc kopier
//find en farve blandt følgende liste farver = ["225533","0000FF","336633","FFFFFF"]; randomColorString = farver[random(farver.length)]; //konverter strengen til HEX farve randomColor = parseInt(randomColorString,16);
//tildel farven til dette mc colorObj = new Color(this); colorObj.setRGB(randomColor);
function newMC() { McCount ++; if (McCount > 20) { //fjern den ældste mc oldestCount = McCount-maxMcCount; removeMovieClip(_parent["wave"+ oldestCount]); } // kopier ny this.duplicateMovieClip("wave"+McCount,McCount); newCopyTime = getTimer()+ random(maxTimeToNextCopy); } }
onClipEvent(enterFrame) { //lad kun masterMCen lave kopier if (this == _level0.wave) { if (getTimer() > newCopyTime ) { newMC(); }
} }
Husk at vælge nogle mere spændende farver ;) mvh geo
Nu er den der! Der er i alt maxMcCount + 1 mc'er fordi masterMC skal tælles med.
onClipEvent(load) { trace(" i am " + this); //initialiser maxTimeToNextCopy = 3000; newCopyTime = getTimer()+ random(maxTimeToNextCopy); McCount = 0; maxMcCount = 4; //tillad kun 20 mc kopier
//find en farve blandt følgende liste farver = ["FF0000","0000FF","00FF00","000000"]; randomColorString = farver[random(farver.length)]; //konverter strengen til HEX farve randomColor = parseInt(randomColorString,16);
//tildel farven til dette mc colorObj = new Color(this); colorObj.setRGB(randomColor);
function newMC() { McCount ++; if (McCount >= maxMcCount) { //fjern den ældste mc oldestCount = McCount-maxMcCount; _parent["wave"+ oldestCount].removeMovieClip(); } // kopier ny this.duplicateMovieClip("wave"+McCount,McCount); newCopyTime = getTimer()+ random(maxTimeToNextCopy); } }
onClipEvent(enterFrame) { //lad kun masterMCen lave kopier if (this == _level0.wave) { if (getTimer() > newCopyTime ) { newMC(); }
iggi >>> har desværre ikke prøvet det endnu, da jeg har problemer med mine loops... )o: det går lidt langsomt med det hele, da jeg kun er amatør-hobby-flash-interessret. Skal nok følge op på spm'et!(det gør jeg altid.)
lingoman>>> tjah, du er jo ganske enkelt god. Og jeg takker mange gange for dit hurtige, for mig helt uforståelige og alligevel fuldt ud funktionsdygtige svar. (o: (o: (o: (o: (o: (o:
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.