Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-09-2004, 13:52   #1 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
Objekt Array Problem

Hallo

Ich habe da ein kleines Problem, beim Code unten werden zuerst einige Objekte deklariert( die Elemente einer Karte eines Computerspiels). dann in einem Array zusammengefasst, sprich die Karte erstellt: Mein Problem ist daß ich noch mehrere Level hinzufügen möchte die in Textdateien abgespeichert sind, aber ich schaffe es halt nur soweit daß in den Array die Buchstaben (als String) reingeschrieben werden und nicht die Objekte die eigentlich den Buchstaben zugeordnet sind.
Kennt sich da wer aus?
mit Dank im Voraus

mfg
Clemens



//BLACK TOP
var B:Object = new Object();
B.clip = "tile_blktop";
B.oktodrive = true;
B.effects = new Object();
B.effects.bumpy = 3;
B.effects.drag = 0.04;

//POT HOLE
var P:Object = new Object();
P.clip = "tile_pothole";
P.oktodrive = true;
P.effects = new Object();
P.effects.bumpy = 5;
P.effects.drag = .08; ///hier werden die Objekte definiert

var map = new Array();
map[0] = [B,B,B,B,B,B,B,B,B,B,B];
map[1] = [B,B,B,B,B,B,B,B,P,B,B];
map[2] = [B,B,P,B,B,P,B,B,B,B,B];
map[3] = [B,B,B,B,B,B,B,P,B,B,B];
map[4] = [B,B,B,B,B,B,B,B,B,B,B];
map[5] = [B,P,B,B,B,B,B,B,B,B,B];
map[6] = [B,B,B,B,P,B,B,P,B,B,B];
map[7] = [B,B,B,B,B,B,B,B,B,B,B];
map[8] = [B,B,P,B,B,B,B,B,B,B,B];
map[9] = [B,B,B,B,B,B,B,B,B,B,B]; //hier wird die Karte zusammengestellt

function arrayladen (dateiname,arr,punkt,x,y){
trace(dateiname+arr+punkt+x+y);
_root[arr] = new Array();
_root[punkt] = new LoadVars();
_root[punkt].load(dateiname);
_root[punkt].onLoad = function(true) {
if (true) {
for (j=0; j<x; j++) {
txtstring = _root[punkt] [punkt+j];
zeile = txtstring.split(",");
for (n=0; n<y; n++) {
_root[arr][j]=[];
_root[arr] [j] [n] = zeile [n];
trace(arr+" koord x:"+j+"y:"+n+"="+_root[arr] [j] [n]);
};
};
};
};
};// das ist die Funktion zum Laden der Textdatei, die ja insofern funktioniert daß in die einzelnen Arrayelemente jeweils der Buchstabe reingeladen wird aber nicht das damit verknüpfte Objekt.

arrayladen("Maptext.txt","map","maptxt","10","10") ;
Clemenses ist offline   Mit Zitat antworten
Alt 03-09-2004, 14:21   #2 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,

versuch mal das:


ActionScript:
  1. for (n=0; n<y; n++) {
  2. _root[arr][j]=[];
  3. _root[arr] [j] [n] = this[zeile[n]];  // hier...this evtl. gegen _root tauschen, je nach Pfad
  4. trace(arr+" koord x:"+j+"y:"+n+"="+_root[arr] [j] [n]);
  5. };


Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 03-09-2004, 16:10   #3 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
Hi

Danke das hat auch gleich funktioniert.
Einen Schönheitsfehler hat das Skript noch. Das Loadvars-element
hat ja als Bezichner _root[point] das eigentlich nur aus dem Grund daß es nicht funktioniert wenn das ganze ein statischer Name ist und ich die Funktion nochmal ( mit anderen Parametern) aufrufe.
Wenn es ganz genau die gleichen Parametern sind. also wenn ich zB.
nach Level 6 wieder auf Level1 zurückfalle funzt es auch nicht.
Es ist halt so daß ich einen Bezeichner des Loadvarselements immer nur einmal verwenden kann. Meine Versuche _root mit this zu ersetzen etc. sind
alle fehlgeschlagen,
Bin verzweifelt.

mfg
Clemens
Clemenses ist offline   Mit Zitat antworten
Alt 03-09-2004, 16:16   #4 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
B liegt aber doch in _root, oder?
dann sollte _root["B"] gehen, und eben auch _root[zeile[n]];, solange zeile[n] = "B" ist.
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 03-09-2004, 16:29   #5 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
nein da hab ich mich wohl schlecht ausgedrückt
es hat gar nichts mit "B" zu tun, es geht rein darum daß ich
bei jedem Aufruf der Arrayladen-Funktionen einen neuen Namen
für das LoadVars object braucht damit es funktioniert. Das Loadvars object
wird ja eigentlich immer nur temporär gebraucht um die Daten in die Arrays einzulesen. Wenn ich jetzt sagen wir mal 100 mal Daten einlese habe ich dann
auch 100 verschiedene,eigenständige Loadvarsobjekte erzeugt die vollkommen umsonst sind und wahrscheinlich die Geschwindigkeit beeinflussen.
Ich suche halt nach einer Methode immer das gleich bezeichenet LoadVarsobjekt nur temporär zu verwenden.
Ich hoff das ist jetzt etwas klarer.

mfg
Clemens
Clemenses ist offline   Mit Zitat antworten
Alt 04-09-2004, 05:49   #6 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
ach so. Du müsstest das LoadVars aber entweder überschreiben können oder im onLoad mit delete this; löschen können...

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 04-09-2004, 12:03   #7 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
deklarier die variable doch gleich temporär wenn du das loadVars objekt nur bis zum moment der auswertung brauchst.
ActionScript:
  1. var _root[punkt]=new LoadVars()

um deine variablen auf einer beliebigen zeitleiste abzulegen, mußte diese natürlich auch als argument übergeben. ein this in einer funktion referenziert nunmal auf die funktion und nicht auf eine zeitleiste
ActionScript:
  1. f=function(zeitleiste,obj,wert){
  2. zeitleiste[obj]=wert
  3. }
  4. f(this,"xyz",10)
deluxe
Deluxe 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 23:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele