Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-09-2004, 21:26   #1 (permalink)
yaqwdrtgb
 
Benutzerbild von maks
 
Registriert seit: Dec 2003
Ort: hh
Beiträge: 92
Question [as] random raster

einen wunderschönen guten abend allesamt!

ich möchte die gesamte bühne mit kästchen-mc´s füllen, 10*10 felder. und wie der titel des threads schon verrät - per zufall. bei einer bühne mit den maßen 800*600 ergeben sich also mc´s mit der grösse 80*60px.

die vorgaben sind:

# 5 verschiedene mc´s
# die anzahl muss nicht gleichmässig verteilt sein. es sollte nur sichergestellt sein, dass auch alle 5 mindestens je 10mal vorkommen
# die darstellung sollte zeitversetzt sein, also jede viertel sekunde erscheint ein neuer mc.
# jedes kästchen sollte auf mausereignisse reagieren können. also braucht es einen eindeutigen instanznamen.

ich habe ehrlich gesagt noch keinen konkreten code-ansatz, da ich im eigenständigen programmieren nicht so wirklich fit bin... vielleicht hat ja jemand ideen?

meine idee sieht folgendermassen aus:
# die koordinaten, wo die mc´s erscheinen sollen, definieren.
# dann bekommen die koordinaten "namen", meinetwegen A1-K10.
# dann wird an die koordinaten jeweils einer der 5 mc´s geladen.

und wie sieht das ganze nun in code aus?

ich bin für jede hilfe dankbar!
maks ist offline   Mit Zitat antworten
Alt 08-09-2004, 22:21   #2 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Mal als Denkanstoß....
Angehängte Dateien
Dateityp: zip positionieren.zip (4,7 KB, 17x aufgerufen)
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 08-09-2004, 22:27   #3 (permalink)
aka stauby
 
Benutzerbild von webdust
 
Registriert seit: Mar 2004
Ort: Würzburg
Beiträge: 705
Ok, hier nur mal ein Denkanstöße:

ActionScript:
  1. for(i=0;i<=80;i++) {
  2.    for(j=0;j<=60;j++) {
  3.      a = random(5);
  4.      this.attachMovie("name"+a,"feld"+100*i+j,100*i+j);
  5.      this["feld"+100*i+j]._x = i*breite_mc;
  6.      this["feld"+100*i+j]._y = j*hoehe_mc;
  7.      eval("anzahl_"+a)++;
  8.    }
  9. }

Was noch fehlt, ist eine if-Abfrage, wenn die Anzahl für den jeweiligen MC zu hoch wird. Dafür könntest du z.B. mit einem Array arbeiten, in das du die Zahlen 1-5 schreibst und sobald eine Zahl oft genug erreicht wird, aus dem Array gelöscht wird.

(Code ungetestet und eben beim Fußball genug Bier getrunken, daher Benutzung auf eigene Gefahre )
__________________
"The things you own end up owning you."
webdust ist offline   Mit Zitat antworten
Alt 08-09-2004, 23:15   #4 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
ok.. hier meine Lösung ( 2std.. keine ahnung warum ich dafür solange gebraucht habe...grml...)
dafür isses aber dynamicsh abänderbar was anzahl der felder und größe der zu attachenden mcs angeht!
ActionScript:
  1. stop();
  2. felder = 10; // waagerecht und horizontal
  3.     //->z.b. 10 für ein feld mit 10*10 feldern
  4. //tatsächliche größe der zu attachenden mcs
  5. //alle 5  müssen alle gleich groß sein!:
  6. mcbreite = 20;
  7. mchoehe = 20;
  8. geschwindigkeit = 0.25//in sec.
  9.     //wie schnell das feld aufgebaut wird
  10.  
  11. //ab hier nix mehr verändern!
  12. //außer vielleicht das onRelease der mcs!
  13. breite = Stage.width;
  14. hoehe = Stage.height;
  15. arr = [];
  16. objbreite = 0;
  17. objhoehe = 0;
  18. while(objbreite < Math.ceil(breite/felder)) {
  19.     objbreite++
  20. }
  21. while(objhoehe < Math.ceil(hoehe/felder)) {
  22.     objhoehe++
  23. }
  24. trace("objektgöße: "+objbreite+"*"+objhoehe);
  25. arr_fuellen = function () {
  26.     for (var i = 0; i<felder; i++) {
  27.         arr[i] = [];
  28.         for (var j=0; j<felder; j++) {
  29.             arr[i][j] ="mc_"+i+"_"+j;
  30.         }
  31.     }
  32. }
  33. arr_fuellen();
  34. attach = function () {
  35.     var ran1 = random(arr.length);
  36.     var ran2 = random(arr[ran1].length);
  37.     var nr = (Number(arr[ran1][ran2].charAt(3))+1)%5+1;
  38.     var an = anzahl;
  39.     anzahl++;
  40.     var obj = _root.attachMovie("mc"+nr,"mc"+anzahl,anzahl);
  41.     obj._xscale *= objbreite/mcbreite;
  42.     obj._yscale *= objhoehe/mchoehe;
  43.     obj._x = (an%felder)*objbreite;
  44.     obj._y = Math.floor(an/felder)*objhoehe;
  45.     obj.onRelease = function () {
  46.         trace(this+" wurde geklickt");
  47.     }
  48.     arr[ran1].splice(ran2,1);
  49.     if (arr[ran1].length <= 0) {
  50.         arr.splice(ran1,1);
  51.         if(arr.length<=0){
  52.             clearInterval(SID);
  53.             delete SID;
  54.             trace("fertig");
  55.         }
  56.     }
  57. }
  58.  
  59. SID = setInterval(attach,geschwindigkeit*1000);

grz
Robert
Angehängte Dateien
Dateityp: zip randomraster.zip (3,7 KB, 42x aufgerufen)
pape ist offline   Mit Zitat antworten
Alt 09-09-2004, 12:28   #5 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Wirklich recht dynamisch, v.a. weil die Größe der attachten MCs sogar noch scaliert werden kann...
Gut, dass ich mich nicht dran gesetzt habe, denn sonst hätte ich eh was anderes gebaut (hätte die Kästchen im Raster nicht nacheinander erscheinen lassen, sondern per Zufall irgendwo darin. Wär noch komplezierter geworden )
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 09-09-2004, 12:59   #6 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
naja.. wird nicht viel kompliezierte denke ich... wenn man einmal nen anstatz hat, dann geht es ja meistens schnell was zu ergänzen..

man speichert die koordinate ja schon quasi mit im mc_namen...
man muss sie nur verwenden, indem man die arrayposition ausliest und demnach positionert und nicht á la modulo

grz
pape ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele