Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-09-2005, 08:19   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 29
Question Dynamische Pfade

Ich habe da ein kleines Problem mit dem anpassen meiner Dynamischen Pfade. oben erstelle ich ein Array mit dem name BoxPfad.
Dann teile ich BoxPfad[] in einer for schleife werte zu un mache dann meinen ersten Dynamischen Pfad
ActionScript:
  1. eval(mCPfade[mCZ]+"."+BoxPfad[i]).onRelease = function()
der funktioniert! aber im onRelease möchte ich gerne nochmals den BoxPfad wert gebrauchen aber nun funktionirt es nicht mehr es übernimt mir das Array nicht ins onRelease da diesein Funktion ist nun meine Frage wie ich dies am besten realisieren könnte?

Der wichtiste Code tail meines Projektchen:

ActionScript:
  1. BoxPfad = new Array();
  2.  
  3. //BoxG gibt auskunft ob das Häckchen gesetzt ist oder nicht. false bedeutet nicht
  4. BoxG = new Array();
  5. for (var i = 1;i<=4;i++)
  6. {
  7.     BoxG[i]=false;
  8. }
  9.  
  10.  
  11.  
  12. for (var i = 1;i<=4;i++)
  13.     {
  14.     BoxPfad[i] = "Box"+i;
  15.        eval(mCPfade[mCZ]+"."+BoxPfad[i]).onRelease = function()
  16.         {
  17.            if(BoxG[i]==false)
  18.              {
  19.               eval(mCPfade[mCZ]+"."+BoxPfad[i]).gotoAndStop(2);
  20.               BoxG[i] = true;
  21.               }
  22.            else
  23.               {
  24.               eval(mCPfade[mCZ]+"."+BoxPfad[i]).gotoAndStop(1);
  25.               BoxG[i] = false;
  26.                   }
  27.         }
  28.            
  29.     }
  30.  
  31.            
  32. }

Ich hoffe das mri jemand dabei helfen kann und bedanke mich schon zum voraus für die Leute die Sich Zeit nehemen um mir zu Helfen. THX!

Geändert von Yanu (05-09-2005 um 08:22 Uhr)
Yanu ist offline   Mit Zitat antworten
Alt 05-09-2005, 08:21   #2 (permalink)
flash student
 
Benutzerbild von pixelarts
 
Registriert seit: Apr 2005
Ort: Schweiz, Zürich
Beiträge: 527
ActionScript:
  1. eval(mCPfade[mCZ]+"."+BoxPfad[i]).onRelease = function(BoxPfad)
pixelarts ist offline   Mit Zitat antworten
Alt 05-09-2005, 08:24   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 29
Super thx Probiers gleich mal aus !
hab mir schon gedacht das ich irgend wie die variable übergeben muss aber keine anung gehapt wie.
bin ja auch n00by THX

Geändert von Yanu (05-09-2005 um 08:29 Uhr)
Yanu ist offline   Mit Zitat antworten
Alt 05-09-2005, 08:31   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 29
Mmm habs gleich ausprobiert aber hat nicht geklapt!
die Variable war imer noch undefined als ich sie mit trace ausgeben liess


nun sieht mein code so aus:


ActionScript:
  1. //BoxG gibt auskunft ob das Häckchen gesetzt ist oder nicht. false bedeutet nicht
  2. //somit ist am anfang kein Häckchen gesetzt
  3. BoxG = new Array();
  4. for (var i = 1;i<=4;i++)
  5. {
  6.     BoxG[i]=false;
  7. }
  8. //Um den Pfad Dynamisch zu machen
  9. BoxPfad = new Array();
  10. for (var i = 1;i<=4;i++)
  11.     {
  12.     BoxPfad[i] = "Box"+i;
  13.         eval(mCPfade[mCZ]+"."+BoxPfad[i]).onRelease = function(BoxPfad)
  14.             {
  15.                 trace (BoxPfad[i]);
  16.                 trace (mCPfade[mCZ]);
  17.                 if(BoxG[i]==false)
  18.                     {
  19.                     eval(mCPfade[mCZ]+"."+BoxPfad[i]).gotoAndStop(2);
  20.                     BoxG[i] = true;
  21.                     trace ("true:    "+BoxG[i]);
  22.                     }
  23.                 else
  24.                     {
  25.                     eval(mCPfade[mCZ]+"."+BoxPfad[i]).gotoAndStop(1);
  26.                     BoxG[i] = false;
  27.                     trace ("false:    "+BoxG[i]);
  28.                     }
  29.             }
  30.            
  31.     }




--------------------------------------------------------------------------
Neuer Teil:
--------------------------------------------------------------------------




nun habe ich da noch einbischen herumgespielt und gemerkt das es nur die Variable i nicht übergiebt.
BoxPfad[i] //geht nicht
BoxPfad[1] //gibt mir einen wert raus und funktioniert
das heisst für mich das nach:
eval(mCPfade[mCZ]+"."+BoxPfad[i]).onRelease = function(BoxPfad)
{
}

in den geschleiften klammern die Variable i nicht übergeben kann wie mache ich das nun am besten?

Geändert von Yanu (05-09-2005 um 09:26 Uhr)
Yanu ist offline   Mit Zitat antworten
Alt 05-09-2005, 09:42   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 29
ich habe das problem nun gelösst indem ich einfach folgendes gemacht habe:
ich habe die 2 Dynamische Pfadangebe mit this ersetzt nun funktionirt es.




ActionScript:
  1. BoxG = new Array();
  2. for (var i = 1;i<=4;i++)
  3. {
  4.         BoxG[i]=false;
  5. }
  6. //Um den Pfad Dynamisch zu machen
  7. BoxPfad = new Array();
  8. for (var i = 1;i<=4;i++)
  9. {
  10.         BoxPfad[i] = "Box"+i;
  11.         eval(mCPfade[mCZ]+"."+BoxPfad[i]).onRelease = function(BoxPfad)
  12.         {
  13.                 trace (BoxPfad[i]);
  14.                 trace (mCPfade[mCZ]);
  15.                 if(BoxG[i]==false)
  16.                 {
  17.                         this.gotoAndStop(2);
  18.                         BoxG[i] = true;
  19.                         trace ("true:    "+BoxG[i]);
  20.                 }
  21.                 else
  22.                 {
  23.                         this.gotoAndStop(1);
  24.                         BoxG[i] = false;
  25.                         trace ("false:    "+BoxG[i]);
  26.                 }
  27.         }
  28.        
  29. }



---------------Mmm hat doch nicht geklapt. machete nur den anschein :-(

Geändert von Yanu (05-09-2005 um 09:46 Uhr)
Yanu ist offline   Mit Zitat antworten
Alt 05-09-2005, 09:46   #6 (permalink)
flash student
 
Benutzerbild von pixelarts
 
Registriert seit: Apr 2005
Ort: Schweiz, Zürich
Beiträge: 527
entschuldige, mein fehler. bei ereignisprozeduren, werden die objekte automatisch übergeben, wobei die aubhängig vo der klasse und der prozedur sind. in diesem fall wird lediglich der clip übergeben, welche vollständig geladen wurde.

somit wird diese mc in BoxPfad geladen. da diese buttons in einem andere geltungsbereich sind (als die veriabeln), kann er diese nicht anzeigen, bzw deswegen ist der trace undefined.

somit werden die arrays gar nicht erkannt.

2. problem sind die on-funktionen und die Variabel i. zur zeit der on-funktion ausführung gibts kein i. das muss vorher definiert sein.


ich habe dein script copiert und bei mier ausprobliert. von wo mCPfade kommt weiss ich ned, deswege konnte ich das nicht anpassen, aber der rest konnte ich anpassen.

1. BoxPfad und BoxG
--------------------------
ich habe den Pfad array mCPfad im eval entfernt, da ich nicht weiss, wo und wie die ist.
da nun die Variabeln eine ebene zurück liegent, also gleich ausserhalt der Buttons, benutzte ich
ActionScript:
  1. this._parent.BoxG
  2. this._parent.BoxPfad

um sie anzusprechen

somit können sie nun angesprochen werden. wenn deine struktur zu komplziert wird, setze die variabeln auf den _root, oder in ein container (mc indem zb variabeln gespeichert werden).

2. i
--------------------------
Da das i mit dem Namen des Buttons übereinstimmt, lässt sich i aus dem namen erstellen.
in box1 ist i = 1
in box2 ist i = 2

somit konnte ich i folgendermassen wieder herstellen:
ActionScript:
  1. this._name.substr(3)

so sieht mein angepasster code aus
ActionScript:
  1. //BoxG gibt auskunft ob das Häckchen gesetzt ist oder nicht. false bedeutet nicht
  2. //somit ist am anfang kein Häckchen gesetzt
  3. BoxG = new Array();
  4. for (var i = 1;i<=4;i++)
  5. {
  6.         BoxG[i]=false;
  7. }
  8. //Um den Pfad Dynamisch zu machen
  9. BoxPfad = new Array();
  10. for (var i = 1;i<=4;i++)
  11. {
  12.         BoxPfad[i] = "Box"+i;
  13.         eval(BoxPfad[i]).onRelease = function()
  14.         {
  15.                 trace(this._parent.BoxPfad[this._name.substr(3)]);
  16.                 trace(mCPfade[mCZ]); //von wo der kommt, weiss ich ned
  17.                 if(this._parent.BoxG[this._name.substr(3)]==false)
  18.                 {
  19.                         eval(this._parent.BoxPfad[this._name.substr(3)]).gotoAndStop(2);
  20.                         this._parent.BoxG[this._name.substr(3)] = true;
  21.                         trace ("true: "+this._parent.BoxG[this._name.substr(3)]);
  22.                 }
  23.                 else
  24.                 {
  25.                         eval(this._parent.BoxPfad[this._name.substr(3)]).gotoAndStop(1);
  26.                         this._parent.BoxG[this._name.substr(3)] = false;
  27.                         trace ("false: "+this._parent.BoxG[this._name.substr(3)]);
  28.                 }
  29.         }
  30.        
  31. }
pixelarts ist offline   Mit Zitat antworten
Alt 05-09-2005, 10:14   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 29
THX nun funktionirts !

Die Variable hat es übernomen das ging aber das mit dem i hat nicht geklapt nun dank deiner Konstruktion konnte ich es zusammen basteln.

Ich hab das mit dem this._name.substr(3) noch nicht kapier aber das kann ich ja auch in der Hilfe von Flash nachlessen


THX


Der Code von Mier sieht nun so aus und funktionirt :-)

ActionScript:
  1. //BoxG gibt auskunft ob das Häckchen gesetzt ist oder nicht. false bedeutet nicht
  2. //somit ist am anfang kein Häckchen gesetzt
  3. BoxG = new Array();
  4. for (var i = 1;i<=4;i++)
  5. {
  6.     BoxG[i]=false;
  7. }
  8. //Um den Pfad Dynamisch zu machen
  9. BoxPfad = new Array();
  10. for (var i = 1;i<=4;i++)
  11.     {
  12.     BoxPfad[i] = "Box"+i;
  13.         eval(mCPfade[mCZ]+"."+BoxPfad[i]).onRelease = function()
  14.             {
  15.                 trace ("1:    "+BoxPfad[this._name.substr(3)]);
  16.                 trace ("2    "+mCPfade[mCZ]);
  17.                 trace ("3    "+BoxG[this._name.substr(3)])
  18.                
  19.                 if(BoxG[this._name.substr(3)]==true)
  20.                     {
  21.                     eval(mCPfade[mCZ]+"."+BoxPfad[this._name.substr(3)]).gotoAndStop(1);
  22.                     BoxG[this._name.substr(3)] = false;
  23.                     trace ("false:    "+BoxG[this._name.substr(3)]);
  24.                     }
  25.                 else
  26.                     {
  27.                     eval(mCPfade[mCZ]+"."+BoxPfad[this._name.substr(3)]).gotoAndStop(2);
  28.                     BoxG[this._name.substr(3)] = true;
  29.                     trace ("true:    "+BoxG[this._name.substr(3)]);
  30.                     }
  31.             }
  32.            
  33.     }
  34.  
  35.            
  36. }
Yanu ist offline   Mit Zitat antworten
Alt 05-09-2005, 10:21   #8 (permalink)
flash student
 
Benutzerbild von pixelarts
 
Registriert seit: Apr 2005
Ort: Schweiz, Zürich
Beiträge: 527
mit this sprichst du den movieclip an.
mit _name findest du seinen namen raus
und mit substr schneidest du einen teil vom string (namen) weg.

das heisst:

this._name ist "Box1"

substr(Start, Länge) wäre der ganze ausdruck. was ich eingebe ist die startposition, also drei, dass heisst er gibt ab "1" aus. eine Länge muss man nicht unbeding angeben. wenn keine länge definiert ist, liest er alles bis an schluss der strings.

somit gibt er nur noch "1" aus
pixelarts ist offline   Mit Zitat antworten
Alt 05-09-2005, 11:34   #9 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 29
Danke vielmals für deine Ausfürliche Hilfe !
Yanu 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 05:15 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele