Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-09-2006, 08:49   #1 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
Unhappy Dynamisch erzeugten MC einzeln anclicken - warum geht dat nicht??????

Moin,

es sollen MC's dynamisch erstellt werden. Und zwar so viele, wie Einträge in einer Datenbank. Diese werden über die Bühne verteilt und mit einem Zufallswert skaliert. Diese MC's sollen klickbar sein. Bei klick, wird der betreffende MC auf 100% skaliert. Alles funzt, nur das ALLE MC's skaliert werden.

Kann mir jemand bei der Fehlersuche helfen??? Biiiittööööööö
Der Fehler muss in Nähe der onMouseDown Anweisung liegen (denke ich). Es werden alle Instanzen auf einmal angesprochen, nicht jede für sich :?

Hier ist das AS:
ActionScript:
  1. //textfeld zur Ausgabe der "Datensätze"
  2. this.createTextField("params_txt", 99, 10, 10, 100, 21);
  3. params_txt.autoSize = "left";
  4. //diverse Variablen deklarieren und initialisieren
  5. //Zum speichern der Bühenbreite
  6. var buehnenbreite:Number = Stage.width;
  7. trace(buehnenbreite);
  8. //hilfsvariable
  9. var i:Number = 1;
  10. //datensatzzeiger aus der PHP Datei
  11. var variable:String = "vorname" + i;
  12.  
  13. //neues LoadVars(my_lv) Object deklarieren
  14. var my_lv:LoadVars = new LoadVars();
  15. //HTTP Status abfragen
  16. my_lv.onHTTPStatus = function(httpStatus:Number) {
  17.     trace("HTTP status is: " + httpStatus);
  18. };
  19. //Daten aus Datei in LV Object laden
  20. my_lv.load("http://localhost:8888/www.leclaire.de/index.php");
  21. //überprüfen, ob erfolgreich geladen ...
  22. my_lv.onLoad = function(success:Boolean) {
  23.     //wenn ok, ...
  24.     if (success) {
  25.         trace("text file successfully loaded");
  26.         // während i kleiner/gleich der Anzahl der Datensätze
  27.         while(i <= my_lv.anzahl) {
  28.             trace(my_lv.anzahl + i);
  29.             //my_lv ist ein Array->[variable] ? my_lv.variable <- funzt nicht! EDIT: wieso funzt es bei my_lv.anzahl???
  30.             //Zuweisung Datensatz an Textfeld + Umbruch
  31.             params_txt.text += my_lv[variable];
  32.             params_txt.text += "\n";
  33.             //Function gruppe mit jedem Durchgang aufrufen
  34.             gruppe();
  35.             trace("name: " + _root["symbol"+i]._name);
  36.             //hilfsvariable um eins in jedem Durchgang erhöhen
  37.             ++i;
  38.         }
  39.     //wenn nicht ok, Fehlermeldung
  40.     } else {
  41.         params_txt.text = "unable to load text file";
  42.     }
  43. };
  44.  
  45.  
  46.  
  47. function gruppe() {
  48.     //Zufallszahl erzeugen, die zwischen 1 und 100 liegt
  49.     var skalierung:Number = Math.floor(Math.random() * 100);
  50.     //MC aus Library hinzufügen - da Function in Schleife aufgerufen wird, werden my_lv.anzahl MC's erstellt mit Intanznamen "symbol"+i
  51.     _root.attachMovie("kreis_mc","symbol"+i,i);
  52.     //x/y Koordinaten festlegen und hochzählen (MC's nebeneinander positionieren)
  53.     _root["symbol"+i]._x = 10 + (i*80);
  54.     _root["symbol"+i]._y = 10;
  55.     //MC's Skalierung mit der Zufallszahl festlegen
  56.     _root["symbol"+i]._xscale = skalierung;
  57.     _root["symbol"+i]._yscale = skalierung;
  58.     //JEDEM MC's einen Listener zuweisen (für spätere Mouseaktionen)
  59.     Mouse.addListener(_root["symbol"+i]);
  60.     //die x-Koordinate in einer Var speichern
  61.     var xkoord:Number = _root["symbol"+i]._x;
  62.     trace(xkoord);
  63.     //Wenn die x-Koordinate größer als die Bühnenbreite mal q ist (wenn MC's außerhalb Bühne) ...
  64.     for (q = 1; xkoord > buehnenbreite*q; q++) {
  65.         //positioniere die MC's, die außerhalb der Bühne liegen, mit einer x-Koordinate, von der die Bühnenbreite mal q abgezogen wurde ...
  66.         //... q wird bei jedem Durchgang um eins erhöht
  67.         //... danach wird xkoord zurückgesetzt (xkoord - buehnenbreite*q) (1. Durchgang(wo die x-koordinate größer als die Bühnenbreite ist)-
  68.         //-Bühnenbreite mal 1; 2. Durchgang Bühnenbreite mal 2 etc.)
  69.         _root["symbol"+i]._y += 40;
  70.         _root["symbol"+i]._x = xkoord - buehnenbreite*q;
  71.     }
  72.     //überprüfen der symbolnamen
  73.     trace("Akt. Symbol=" + _root["symbol"+i]._name);
  74.     //Wenn ein MC's geklickt wird, skaliere diesen auf 100%
  75.     _root["symbol"+i].onMouseDown = function() {
  76.         trace("klick vom " + this._name);
  77.         this._xscale = 100;
  78.         this._yscale = 100;
  79.     }
  80.     trace("Skalierung=" + skalierung);
  81. };

Wer sich nach dem Sinn fragt: es soll evtl. mal eine Site für einen Fotografen werden - in die MC's werden dann Bilder geladen, die in einer DB hinterlegt sind - sofern es denn mal so funzt, wie ich's mir vorstell

Sonnige Grüße,

das Tom
__________________
__________________________________________
"… blubb!"

Geändert von tomtom69 (11-09-2006 um 08:50 Uhr) Grund: Edit
tomtom69 ist offline   Mit Zitat antworten
Alt 11-09-2006, 09:54   #2 (permalink)
Manfred?
 
Benutzerbild von ricardo
 
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 121
hi,
setz das ganze in eine Schleife:

PHP-Code:

function gruppe() {
    for (var 
0my_lv.anzahli++) {
        
//MC aus Library hinzufügen - da Function in Schleife aufgerufen wird, werden my_lv.anzahl MC's erstellt mit Intanznamen "symbol"+i
// habe die attachten mc's in ne variable zum besseren handling gepackt...
        
var myMcs:MovieClip _root.attachMovie("kreis_mc""symbol" ii);
        
//Zufallszahl erzeugen, die zwischen 1 und 100 liegt
        
var skalierung:Number Math.floor(Math.random() * 100);
        
myMcs._x 10 + (80);
        
myMcs._y 10;
        
//MC's Skalierung mit der Zufallszahl festlegen
        
myMcs._xscale skalierung;
        
myMcs._yscale skalierung;
        
//Wenn ein MC's geklickt wird, skaliere diesen auf 100%

//.. dein MouseDown in OnPress geändert...
        
myMcs.onPress = function() {
            
trace("klick vom " this._name);
            
this._xscale 100;
            
this._yscale 100;
        };
        
//x/y Koordinaten festlegen und hochzählen (MC's nebeneinander positionieren)
        //JEDEM MC's einen Listener zuweisen (für spätere Mouseaktionen)
        
Mouse.addListener(myMcs);
        
//die x-Koordinate in einer Var speichern
        
var xkoord:Number myMcs._x;
        
trace(xkoord);
        
//Wenn die x-Koordinate größer als die Bühnenbreite mal q ist (wenn MC's außerhalb Bühne) ...
        
for (1xkoord buehnenbreite qq++) {
            
//positioniere die MC's, die außerhalb der Bühne liegen, mit einer x-Koordinate, von der die Bühnenbreite mal q abgezogen wurde ...
            //... q wird bei jedem Durchgang um eins erhöht
            //... danach wird xkoord zurückgesetzt (xkoord - buehnenbreite*q) (1. Durchgang(wo die x-koordinate größer als die Bühnenbreite ist)-
            //-Bühnenbreite mal 1; 2. Durchgang Bühnenbreite mal 2 etc.)
            
myMcs._y += 40;
            
myMcs._x xkoord buehnenbreite q;
        }
        
//überprüfen der symbolnamen
        
trace("Akt. Symbol=" myMcs._name);
        
trace("Skalierung=" skalierung);
    }

hope it helps

ricardo

Geändert von ricardo (11-09-2006 um 09:57 Uhr)
ricardo 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 08:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele