Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-12-2006, 09:38   #1 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
MCL und Array Verschachtelter Pfad

Morgen Leute:
Folgendes Problem:

ich habe einen MCL, der mir jpgs läd.
ActionScript:
  1. var mcl = new MovieClipLoader();
  2. var list = new Object();
  3. var clip = XMLakt_nails;
  4. var dest = new Array("mcakt1", "mcakt2");
  5. var current = 0;
  6.  
  7. list.onLoadComplete = function() {
  8.     loadNextClip();
  9. }
  10.  
  11. mcl.addListener(list);
  12.  
  13. function loadNextClip() {
  14.     if (current < clip.length) {
  15.         mcl.loadClip(clip[current], this[dest[current]]);
  16.         current ++;
  17.     }
  18. }
  19.  
  20. loadNextClip();

soweit so gut. Funktioniert auch
Ich möchte aber in meinem dest-array nicht den mc mcakt1 ansprechen, sonder eigentlich einen mc in diesem mc. Also mcakt1.picholder, dann mcakt2.picholder, usw....

Wie aber gebe ich in dem Array diesen pfad an??
deejayy ist offline   Mit Zitat antworten
Alt 19-12-2006, 10:40   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
dest = [mcakt1.picholder, mcakt2.picholder];
..
mcl.loadClip(clip[current], dest[current]);


oder
dest = new Array("mcakt1", "mcakt2");
...
mcl.loadClip(clip[current], this[dest[current]].picholder);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (19-12-2006 um 10:42 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 19-12-2006, 10:51   #3 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
danke für die Antwort

kurz und prägnant.
deejayy ist offline   Mit Zitat antworten
Alt 19-12-2006, 10:53   #4 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
hätte doch noch ne frage:

und zwar gibt es globale Arrays??
Also wenn ich ein Array definiere und in einer eigenen Funktion mit den Werten arbeiten will, gibt er mir undefined aus.
deejayy ist offline   Mit Zitat antworten
Alt 19-12-2006, 11:01   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ein array ist auch nur ein objekt ist auch nur eine variable.

überprüfe dein this, ob es auch das ist, für was du es hälst.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 19-12-2006, 11:05   #6 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
ich meine ich habe folgende beiden Arrays, die in der Haupttimeline definiert sind:
ActionScript:
  1. var matrix_xwert :Array = new Array(0, 110, 220, 330);
  2. var matrix_ywert :Array = new Array(0, 110, 220, 330, 440, 550, 660, 770, 880, 990, 1100);
Nun möchte ich in einer function, die in einem MC liegt, mit den Werten der Arrays rechnen. Nur dann gibt er mir bei trace(matrix_xwert[0]); undefined aus.

Wenn ich das Array in meinem MC definiere, dann gehts. Aber ich bräuchte das Array in mehreren MCßs

Verstehst du das Problem. Ich möchte halt das gleiche Array nicht 4 mal definieren. Wäre sehr sinnlos.
deejayy ist offline   Mit Zitat antworten
Alt 19-12-2006, 11:37   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
an den array's liegt es nicht. wenn es nicht geht, dann hast du da noch was anderes gemacht.
Code:
var matrix_xwert:Array = new Array(0, 110, 220, 330);
//
function fTest1() {
	trace(matrix_xwert[1]);
}
fTest1();
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 19-12-2006, 12:09   #8 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
also so zerrissen bringt des glaub ich nix.
ich poste mal mein komplettes script:
ActionScript:
  1. var matrix_xwert :Array = new Array(0, 110, 220, 330);
  2. var matrix_ywert :Array = new Array(0, 110, 220, 330, 440, 550, 660, 770, 880, 990, 1100);
  3.  
  4. function picattach(c:Number) {
  5.     attachMovie("picbutton", this["mcakt"+c], c);
  6.     this["mcakt"+c]._x = matrix_xwert[c-1]; //arraywert stimmt, per trace überprüft)
  7.     this["mcakt"+c]._y = matrix_ywert[c-1]; //arraywert stimmt, per trace überprüft)
  8. }
  9.  
  10. picattach(1);//ein mc wird auch attached, aber ohne die _x und _y verschiebung!
  11.  
  12. var mcl = new MovieClipLoader();
  13. var list = new Object();
  14. var clip = _root.XMLakt_nails; // clip ist richtig, ebenfalls per trace überprüft
  15. var dest = new Array(["mcakt"+1], ["mcakt"+1]); //ich denke, dass hier der wurm irgendwie ist... die ansprechnung meiner dest ist wohl falsch...
  16. var current = 0;
  17.  
  18. list.onLoadComplete = function() {
  19.     loadNextClip();
  20. }
  21.  
  22. mcl.addListener(list);
  23.  
  24. function loadNextClip() {
  25.     if (current < clip.length) {
  26.         mcl.loadClip(clip[current], this[dest[current]]);
  27.         current ++;
  28.     }
  29. }
  30.  
  31. loadNextClip();

hat jemand ne ahnung, was hier falsch ist??
deejayy ist offline   Mit Zitat antworten
Alt 19-12-2006, 13:14   #9 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
okay,
habe es hinbekommen
War zwar etz derber aufwand... aber soweit so gut
ActionScript:
  1. var matrix_xwert :Array = new Array(0, 110, 220, 330);
  2. var matrix_ywert :Array = new Array(0, 110, 220, 330, 440, 550, 660, 770, 880, 990, 1100);
  3.  
  4. function picduplicate(i) {
  5.         duplicateMovieClip(leerermc, "mcakt" + i, i);
  6.         _root.contentakt["mcakt"+i]._x = matrix_xwert[i-1];
  7.         _root.contentakt["mcakt"+i]._y = matrix_ywert[i-1]; 
  8. }
  9.  
  10. for (i=1; i<=einheiten001;i++) {
  11.     picduplicate(i)
  12. }
  13.  
  14. var mcl = new MovieClipLoader();
  15. var list = new Object();
  16. var clip = _root.XMLakt_nails;
  17. var dest = new Array(["mcakt"+1], ["mcakt"+2], ["mcakt"+3]);
  18. var current = 0;
  19.  
  20. list.onLoadComplete = function() {
  21.     loadNextClip();
  22. }
  23.  
  24. mcl.addListener(list);
  25.  
  26. function loadNextClip() {
  27.     if (current < clip.length) {
  28.         mcl.loadClip(clip[current], this[dest[current]].picholder);
  29.         current ++;
  30.     }
  31. }

loadNextClip();
deejayy ist offline   Mit Zitat antworten
Alt 19-12-2006, 13:22   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
dann ist es ja gut, wenn's geht. nur zum abrunden:

was issen das da?
var dest = new Array(["mcakt"+1], ["mcakt"+2], ["mcakt"+3]);
so packst du 3 array's in ein array! wenn dann doch so:
var dest = new Array("mcakt"+1, "mcakt"+2, "mcakt"+3);

das da hatte ich im verdacht
mcl.loadClip(clip[current], this[dest[current]].picholder);
deine array legst du auf _root bzw. _level0 an. ist dieses this _root?

deshalb ist meine 1. variante (nicht den namen, sondern das mc direkt in das array schreiben - d.h. den link darauf) besser gewesen.

aber wenn's geht, dann geht's.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 19-12-2006, 13:37   #11 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
nach leichten schönheitskorrekturen:

ActionScript:
  1. function picduplicate(i) {
  2.         duplicateMovieClip(leerermc, "mcakt" + i, i);
  3.         _root.contentakt["mcakt"+i]._x = _root.matrix_xwert[i-1];
  4.         _root.contentakt["mcakt"+i]._y = _root.matrix_ywert[i-1];   
  5. }
  6.  
  7. var mcl = new MovieClipLoader();
  8. var list = new Object();
  9. var clip = _root.XMLakt_nails;
  10. var dest = new Array();
  11.  
  12. list.onLoadComplete = function() {
  13.     loadNextClip();
  14. }
  15.  
  16. mcl.addListener(list);
  17.  
  18. function loadNextClip(j) {
  19.     if (j < clip.length) {
  20.         mcl.loadClip(clip[j], this[dest[j]].picholder);
  21.     }
  22. }
  23.  
  24. for (i=1; i<=einheiten001;i++) {
  25.     picduplicate(i)
  26.     dest.push ("mcakt"+i);
  27.     loadNextClip(i-1);
  28. }

So etz... ich habe nun den fehler mit den Arrys in den Arrays behoben
zu deinem zweiten Punkt:
mein Array dest liegt nciht auf _root sondern in einem mc (der mc liegt auf _root). somit müsste das this ja passen. Funktionieren tuts zumindest.

des einzige was ich etz noch brauche, ist eine intrevall-funktion in meiner for-schleife. Hab etz schon ewig rumprobiert, aber kriegs nicht hin. Ich möchte, dass die mcs in abstand von 50 ms dupliziert werden.
irgendwie will das aber bei mir nicht.

Geändert von deejayy (19-12-2006 um 13:44 Uhr)
deejayy ist offline   Mit Zitat antworten
Alt 19-12-2006, 13:55   #12 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ungetestet:
Code:
function picduplicate(i) {
	clearInterval(this._si);
	duplicateMovieClip(leerermc, "mcakt"+i, i);
	this.dest.push("mcakt"+i);
	this["mcakt"+i]._x = _root.matrix_xwert[i-1];
	this["mcakt"+i]._y = _root.matrix_ywert[i-1];
}
//
_si = [];
for (i=1; i<=einheiten001; i++) {
	_si.push(setInterval(this, "picduplicate", 50, _si.length));
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 19-12-2006, 14:13   #13 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
also das script funktioniert nicht.
das script bleibt einfach irgendwo dazwischen stehen und mackt keinen zucker mehr.
Verstehe auch deine Vorgehensweise nicht wirklich mit dem _si.array

deejayy ist offline   Mit Zitat antworten
Alt 19-12-2006, 14:49   #14 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ich kann's ja nicht testen.
das da geht, den rest musst du selbst einbauen.
das array wird benötigt, um die interval-nummern aufzuheben, sonst bekommt man das ding nicht mehr gestoppt.
Code:
function picduplicate(i, len) {
  clearInterval(this._si[len]);
  trace(this+": "+i);
}
einheiten001 = 3;
_si = [];
for (i=1; i<=einheiten001; i++) {
  _si.push(setInterval(this, "picduplicate", i*1000, i, _si.length));
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 19-12-2006, 14:55   #15 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
es geht!!!!!!!!!!
es geht!!!!!!!!
du bist einfach so crazy hammer

danke für die wahnsinnshilfe!!!!!!
deejayy 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 19:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele