Avatar billede madsfriburg Nybegynder
26. marts 2002 - 22:52 Der 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??

Mvh. Mads.
Avatar billede madsfriburg Nybegynder
26. marts 2002 - 22:53 #1
", flere kopierer oveni..." = flere kopier
Avatar billede lingoman Nybegynder
27. marts 2002 - 07:31 #2
Ja, det kan lade sig gøre!

Lad os tage random placering først.

shift_x = 50*Math.random();
shift_y = 50*Math.random();

Disse bliver 2 tilfældige tal mellem 0 og 49.999...
Når vi tilføjer dem til mc._x og mc._y får vi den nye mc's placering.

Næste punkt er en tilfældig farve ud fra et udvalg på 4 farver.

Du har ikke nævnt hvilke farver du ønsker så jeg tager bare nogle..

farver = ["225533","0000FF","336633","FFFFFF"];
randomColorString = farver[random(farver.length)];
//konverter strengen til HEX farve
randomColor = parseInt(randomColorString,16);

//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.

mvh geo
Avatar billede lingoman Nybegynder
27. marts 2002 - 08:37 #3
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);

  //tildel ny placering
  shift_x = 50*Math.random();
  shift_y = 50*Math.random();
  this._x += shift_x;
  this._y += shift_y;

  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();
    }

  }
}
Avatar billede lingoman Nybegynder
27. marts 2002 - 08:42 #4
En lille syntaksfejl... prøver igen :)

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);

  //tildel ny placering
  shift_x = 50*Math.random();
  shift_y = 50*Math.random();
  this._x += shift_x;
  this._y += shift_y;

  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
Avatar billede lingoman Nybegynder
27. marts 2002 - 08:59 #5
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);

  //tildel ny placering
  shift_x = 50*Math.random();
  shift_y = 50*Math.random();
  this._x += shift_x;
  this._y += shift_y;

  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();
    }

  }
}
Avatar billede lingoman Nybegynder
27. marts 2002 - 09:00 #6
jeg har sat maxMcCount til 4 i det sidste eksempel så jeg kunne tælle dem ;)
Avatar billede madsfriburg Nybegynder
27. marts 2002 - 09:20 #7
Du er søreme morgenfrisk! Jeg afprøver... er tilbage senere idag. (o:
Avatar billede lingoman Nybegynder
27. marts 2002 - 09:21 #8
påskeferie ;)
Avatar billede iggi Nybegynder
27. marts 2002 - 19:53 #9
madsfriburg fik du http://www.eksperten.dk/spm/188695  til at virke?
Avatar billede madsfriburg Nybegynder
27. marts 2002 - 23:54 #10
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.)
Avatar billede madsfriburg Nybegynder
28. marts 2002 - 00:04 #11
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:
Avatar billede madsfriburg Nybegynder
28. marts 2002 - 00:05 #12
Og fortsat god "påskeferie"...
Avatar billede lingoman Nybegynder
28. marts 2002 - 07:14 #13
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester