Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-07-2005, 18:44   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 6
MC auf Bühne mit unterschiedlicher Größe duplizieren

Hallo,

ich habe folgendes Problem. Ich möchte einen MC auf der Bühne ca. 20-30 mal duplizieren. Dabei soll jede Instanz des MC's eine bestimmte Größe haben, die nur einmal vorkommt. Jetzt soll man der Reihe nach von der größten Instanz bis zur kleinsten Instanz die MC's wegklicken können.

Leider bin ich noch nicht so fit in AS. Meine Überlegung war, das ganze mit einem Array zu realisieren in dem die 20-30 möglichen Größen stehen. danach wollte ich die Instanzen mit einer for-Schleife auf der Bühne platzieren, jeweils mit einer neuen Höhe und Breite.

ActionScript:
  1. instanzen = new Array("1","1.1","1.2","1.3","1.4" ...);
  2. inzZahl = instanzen.length;
  3. breite = grafik_mc._width;
  4. hoehe = grafik_mc._height;
  5. this.onLoad = function(){
  6.             for (i=0; i<inzZahl; i++){
  7.                 grafik_mc.duplicateMovieClip("grafik"+i+"_mc", i, {_x:Math.round(Math.random()*(550-breite)), _y:Math.round(Math.random()*(400-hoehe)),_width:breite*instanzen[i], _height:hoehe*instanzen[i]});
  8.             }
  9.     }

So sieht mein bisheriges Skript aus. Funkioniert aber leider nicht.
Was ist daran falsch? Und die nächste Frage: Bin ich mit meiner Überlegung, das so zu realisieren auf dem Holzweg? Wie ich das mit dem Wegklicken machen soll weiß ich nämlich leider auch noch nicht.

Vielen dank schonmal für jede Hilfe!

Grüße.
ros23 ist offline   Mit Zitat antworten
Alt 28-07-2005, 19:44   #2 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Zitat:
Zitat von ros23
...
Was ist daran falsch? Und die nächste Frage: Bin ich mit meiner Überlegung, das so zu realisieren auf dem Holzweg?...
hmm...,
eigentlich gar nichts, es will halt nicht mit width und height funktionieren...warum, naja da bin ich auch nicht ganz sicher (vermutlich weill die instanzen nicht sofort komplett 'generiert' sind), aber warum auch so komplizert es gibt doch auch xscale und yscale:
ActionScript:
  1. instanzen = new Array(100, 110, 120, 130, 140);
  2. inzZahl = instanzen.length;
  3. //denn sinnlosen onLoad-Handler hab ich auch entfernt!!!
  4. for (i=0; i<inzZahl; i++) {
  5.     grafik_mc.duplicateMovieClip("grafik"+i+"_mc", i, {_x:Math.round(Math.random()*(550-breite)), _y:Math.round(Math.random()*(400-hoehe)), _xscale:instanzen[i], _yscale:instanzen[i]});
  6. }

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 28-07-2005, 20:51   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 6
Hi,

super. vielen dank. jetzt ist schonmal das erste problem gelöst. aber wieso das mit der _width und _height-angabe nicht funktioniert hat finde ich komisch, vor allem wenn es dann mit _xscale und _yscale funktioniert. müsste doch eigentlich das gleiche sein.

ich hab das AS jetzt noch ein bißchen modifiziert, damit am anfang kein mc auf der bühne liegen muss, und dass keine der flächen über den film hinausgeht.

ActionScript:
  1. instanzen = new Array(100, 120, 140, 160, 180);
  2. inzZahl = instanzen.length;
  3. //die kleinste Fläche beträgt 80
  4. //hoehe und breite wird benötigt, damit keine fläche über den Film hinausgeht
  5. maxWert = instanzen[inzZahl-1];
  6. breite = 80*(maxWert/100);
  7. hoehe = 80*(maxWert/100);
  8. for (i=0; i<inzZahl; i++){
  9.                 starter.attachMovie("grafik","grafik"+i+"_mc", i, {_x:Math.round(Math.random()*(550-breite)), _y:Math.round(Math.random()*(400-hoehe)),_xscale:instanzen[i], _yscale:instanzen[i]});
  10. }

Das klappt jetzt alles wunderbar. Das gute ist, dass die größte fläche automatisch im höchsten _level liegt. leider bin ich jetzt aber langsam mit meinem latein am ende. wie krieg ich es denn hin, dass man nacheinander das größte bis zur kleinsten wegklicken kann/muss.

ich hab schon alles mögliche versucht, komm aber nicht weiter. wie muss ich da denn vorgehen?

ich häng die datei mal mit an.

grüße
Angehängte Dateien
Dateityp: zip flaechen.zip (2,6 KB, 3x aufgerufen)
ros23 ist offline   Mit Zitat antworten
Alt 28-07-2005, 22:47   #4 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
naja, etwas unsauber gescriptet (wenn Du mx04 hast wirds vermutlich nicht funktionieren), aber häng das mal an:
ActionScript:
  1. grafik_mc_oRel=function(ziel,n){
  2.     ziel.n=n-1;
  3.     ziel.butt.onRelease=function(){
  4.         if(ziel.n>=0) grafik_mc_oRel(starter["grafik"+ziel.n+"_mc"],ziel.n);
  5.         ziel.removeMovieClip();
  6.     }
  7. }
  8. grafik_mc_oRel(starter["grafik"+(i-1)+"_mc"],i-1);

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 29-07-2005, 08:54   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 6
hi,

puh.
auf sowas wäre ich nie gekommen. hab das skript mal eingefügt, aber leider klappt es nicht. muss ich da noch irgendwelche pfadangaben ändern? was genau macht das skript denn?
ActionScript:
  1. instanzen = new Array(100, 120, 140, 160, 180);
  2. inzZahl = instanzen.length;
  3. //die kleinste Fläche beträgt 80
  4. //hoehe und breite wird benötigt, damit keine fläche über den Film hinausgeht
  5. maxWert = instanzen[inzZahl-1];
  6. breite = 80*(maxWert/100);
  7. hoehe = 80*(maxWert/100);
  8. for (i=0; i<inzZahl; i++){
  9.                 starter.attachMovie("grafik","grafik"+i+"_mc", i, {_x:Math.round(Math.random()*(550-breite)), _y:Math.round(Math.random()*(400-hoehe)),_xscale:instanzen[i], _yscale:instanzen[i]});
  10. }
  11.  
  12. grafik_mc_oRel=function(ziel,n){
  13.         ziel.n=n-1;//was machst du hier
  14.         ziel.butt.onRelease=function(){//muss hier nicht noch eine andere pfandangabe hin, bzw. muss ich nicht noch irgendwo einen instanznamen vergeben?
  15.                 if(ziel.n>=0) grafik_mc_oRel(starter["grafik"+ziel.n+"_mc"],ziel.n);
  16.                 ziel.removeMovieClip();
  17.         }
  18. }
  19. grafik_mc_oRel(starter["grafik"+(i-1)+"_mc"],i-1);//wieso taucht hier der starter wieder auf? kann ich jeden movie über starter[grafik0_mc], starter[grafik1_mc] usw. ansprechen?
  20.  

ich bin wie gesagt noch nicht so fit in AS und würde mich auch freuen wenn mir jmd sagen könnte, was an meinem script oben unsauber ist, damit ich weiss, wie ich es das nächste mal besser machen kann.

vielen dank schonmal

ros

Geändert von ros23 (29-07-2005 um 13:10 Uhr)
ros23 ist offline   Mit Zitat antworten
Alt 01-08-2005, 08:57   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 6
Hi,

ich versuche jetzt schon ne Weile, dass man die Flächen nacheinander der Größe nach wegklicken kann. Schaffe es aber nicht. Wie kann ich das denn realisieren?

Grüße
ros23 ist offline   Mit Zitat antworten
Alt 01-08-2005, 20:25   #7 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
oh sorry,
ich hab ein kleines aber feines Detail vergessen.
Im Grafik-mc musst Du der Schaltfläche den Instanznamen 'butt' zuweisen, dann gehts, ich hängs jetzt aber auch mal an...
Angehängte Dateien
Dateityp: zip flaechen.zip (2,9 KB, 4x aufgerufen)
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 04-08-2005, 13:46   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 6
vielen dank.

da hätte ich aber eigentlich auch echt von selbst drauf kommen müssen.
ros23 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 20:12 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele