Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-12-2011, 03:55   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2010
Beiträge: 50
Vars laden, ohne VarNames zu kennen

hallo,
mein Problem, ich lade vars ohne zu kennen deswegen speichere ich in Array nun möchte ich von Array aus die vars von _root löschen leider klappt nicht mit delete InitArray[i]; ?

und ist das sinnvoll mit loadvars so zu arbeiten mit 30 - 50 variables


ActionScript:
  1. InitArray = [];
  2.  
  3. function UrlSend (xx:String, Url:String) {
  4.              /////  delete  vars
  5.     for (var i = 0; i < InitArray.length; i++) {
  6.         delete InitArray[i];
  7.     }
  8.  
  9.     var lv:LoadVars = new LoadVars ();
  10.     lv.sendAndLoad (url_ + "xx/" + Url + ".php",lv,"GET");
  11.     lv.onLoad = function (success) {
  12.         if (success) {
  13.             ASSetPropFlags (lv,"onLoad",1);
  14.             for (i in this) {
  15.                 if (this[i] != '') {
  16.                     _root[i] = this[i];
  17.                     InitArray.push (i);
  18.  
  19.                 }
  20.             }
  21.         }
  22.     };
  23. }
lupe ist offline   Mit Zitat antworten
Alt 14-12-2011, 09:16   #2 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Da fallen mir jetzt insgesamt vier Möglichkeiten ein. (Von Schleifen mit pop() etc. mal abgesehen)

PHP-Code:
var initArray;

initArray = new Array(5);
initArray = new Array();
trace(initArray+" "+initArray.length);

initArray = new Array(5);
initArray = [];//also das selbe, nur kürzer
trace(initArray+" "+initArray.length);

initArray = new Array(5);
delete initArray;
trace(initArray+" "+initArray.length);

initArray = new Array(5);
initArray.length 0;//kurios, aber irgendwie fesch ;)
trace(initArray+" "+initArray.length); 
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 14-12-2011, 09:20   #3 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
Vertausche auch mal die Reihenfolge der Zeile 10 mit dem Block ab Zeile 11
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 14-12-2011, 09:22   #4 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Was bringen denn eigentlich unbekannte Variablen?

OT: Und was ist Viva la [Silb] - wollte ich dich schon ewig fragen
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 14-12-2011, 10:33   #5 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
@lupe:
Das Löschen müsste wohl eher so in der Art aussehen:
ActionScript:
  1. for (var i:Number = 0; i < InitArray.length; i++) {
  2.     delete _root[ InitArray[i] ];
  3. }
Ich frag mich allerdings wieso Du Deine VAriablen überhaupt in di _root schreibst? Das gibt doch nur Chaos?! Leg Dir stattdessen doch einfach ein Objekt an:
ActionScript:
  1. var initObject:Object;
  2.  
  3. function urlSend (xx:String, url:String) {   
  4.     var lv:LoadVars = new LoadVars();
  5.    
  6.     lv.onLoad = function (success:Boolean) {
  7.         if (!success) return;
  8.        
  9.         initObject = { };
  10.        
  11.         for (var n:String in this) {
  12.             if (this[n] != '') initObject[n] = this[n];
  13.         }
  14.     }
  15.    
  16.     lv.sendAndLoad (url_ + "xx/" + url + ".php", lv, "GET");
  17. }
Ich würde Dir übrigens empfehlen, tatsächlich auch mit AS2 zu arbeiten - also die Variablen zu deklarieren ud zu typisieren - z.Z. ist das eher AS1. Zudem hat es sich in ActionScript eingebürgert Variablen- und Funktionsnamen grundsätzlich mit einem Kleinbuchstaben zu beginnen. Große Anfangsbuchstaben sind nämlich für Klassen reserviert.

P.S.: Was ist eigentlich xx? Du verwendest diesen Parameter z.Z. ja gar nicht?!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (14-12-2011 um 10:36 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 14-12-2011, 18:04   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2010
Beiträge: 50
ich habe auch deine variante probiert aber geht trotzdem nicht, variable wird nicht vollständig gelöscht, das ist irgendwie nicht synchron glaube ich

was ich machen will ich habe 6 URL mit diesen Funktion abrufen urlSend("Init", "api"); teil davon muss ich mit setinterval abrufen alle Sekunde .

wenn sie geladen sind bearbeiten, und dann wieder bei neu Abruf gleiche Funktion alle alte variable löschen und neu laden.



deswegen habe ich alle in Funktion gepackt und Vars laden, ohne VarNames zu kennen versucht. außer dem ich suche seit langem für das sendAndLoad gute Lösung leider ohne Erfolg eigentlich mit diese Funktion ist alles praktisch aber die bereit geladene variables wird nicht gelöscht bei neu Abruf das macht Probleme

hier ist nochmal ganze Script.



ActionScript:
  1. InitArray = [];
  2. GameArray = [];
  3.  
  4.  
  5.  
  6. function urlSend (GameType:String, GameUrl:String) {
  7.     if (GameType == "Init") {
  8.         for (var i = 0; i < InitArray.length; i++) {
  9.             delete InitArray[i];
  10.         }
  11.         InitArray = [];
  12.     }
  13.     if (GameType == "Game") {
  14.         for (var i:Number = 0; i < GameArray.length; i++) {
  15.         delete GameArray.length[i];
  16.         }
  17.     }
  18.     var lv:LoadVars = new LoadVars ();
  19.     if (GameType == "Init") {
  20.         lv.PHPSESSID = _root.PHPSESSID;
  21.         lv.secX = _root.secX;
  22.         lv.game_name = game_name_Var;
  23.     }
  24.     if (GameType == "Game") {
  25.         lv.PHPSESSID = _root.PHPSESSID;
  26.         lv.secX = _root.secX;
  27.     }
  28.     lv.sendAndLoad (url_ + "api/" + GameUrl + ".php",lv,"GET");
  29.     lv.onLoad = function (success) {
  30.         if (success) {
  31.             ASSetPropFlags (lv,"onLoad",1);
  32.             for (i in this) {
  33.                 if (this[i] != '') {
  34.                     this[i] = this[i];
  35.  
  36.                     if (GameType == "Init") {
  37.                         InitArray.push (i);
  38.                     }
  39.                     if (GameType == "Game") {
  40.                         GameArray.push (i);
  41.                     }
  42.                 }
  43.             }
  44.             ////////////////////
  45.        
  46.            
  47.             if (GameType == "Init") {
  48.                 ////hier muss  ich variable  bearbeiten.  aber  bei neu Abruf müssen sie weg sein
  49.             }
  50.            
  51.            
  52.         } else {
  53.             trace ("Error");
  54.         }
  55.     };
  56. }
  57.  
  58. urlSend("Init", "api");
  59. urlSend("Game", "gameName");
lupe ist offline   Mit Zitat antworten
Alt 14-12-2011, 18:52   #7 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Ich versteh immer noch nicht ganz, was Du genau vorhast und finde auch in Deinem Code z.B. auch kein Intervall, das alle Sekunde etwas lädt?!

Ich kann mir aber gut vorstellen, dass es dieses Kurze Zeitintervall (und der zweimalige Aufruf dieser Funktion) ist, der hier Problem verursacht. Es ist ja nicht gesagt, das die Ladeprozesse in der Reihenfolge beendet werden, wie man sie startet. Und dann überschreiben sie sich gegenseitig die Daten. Warum lädst Du da überhaupt so oft? Und was lädst Du?

Vielleicht erklärst Du einfach mal, was Du genau vorhast?! Dafür gibt es bestimmt eine saubere Lösung!


P.S.: Sowas hier ist natürlich unsinnig und überflüssig:
ActionScript:
  1. this[i] = this[i];
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (14-12-2011 um 18:55 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 14-12-2011, 19:07   #8 (permalink)
Neuer User
 
Registriert seit: Dec 2010
Beiträge: 50
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Vielleicht erklärst Du einfach mal, was Du genau vorhast?! Dafür gibt es bestimmt eine saubere Lösung!
P.S.: Sowas hier ist natürlich unsinnig und überflüssig:
ActionScript:
  1. this[i] = this[i];
einfach 6 URL eine davon muss interval alle sagen wir mal 3 Sekunde neu laden das ist der api.
alle anderen Manuel mit Button starten biss dahin kein Problem mein Problem wenn ich urlSend("Game", "gameName"); lade alle variablen sind in _root oder in this. erstmals egal z.B punkte mit wert 100 bei ersten abruft ist kein Problem weil die variablen noch nicht da ist aber bei Abruf 2 dann habe ich punkte statt 100 wird es 100100 weil ich die alte variable noch da habe deswegen ich muss bei jede Abruf die alte variable löschen.

warum ich alle url mit if (GameType == "Game") { kontrolliere jede url hat andere variablen zum senden und empfangen.



übrigens Zeitintervall habe noch nicht eingebaut aber wurde gleiche Probleme machen so lange die alte variable noch da ist.

sonst ich habe eine loader.swf und extra.swf lade ich mit MovieClipLoader in mc also das paht ist _root.mc. alle sendAndLoad muss in diesen extra.swf passieren.
lupe 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Public vars in MCs ohne externe AS chrissy810 ActionScript 3 1 12-11-2008 15:40
removeEventListener ohne Funktion zu kennen grafgarf ActionScript 3 7 02-05-2008 19:33
vars mit php laden - umlaute marcorei Flash MX 2004 6 09-07-2005 12:43
vars in *.txt speichern ohne server Fuery3302 ActionScript 1 3 04-10-2004 21:38
vars aus txt laden staccato Flash MX 4 23-06-2003 11:45


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele