Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-01-2012, 18:54   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Durch while-Schleife erstellte Variablen abfragen und übergeben

Hallo,

hab ein kleines Problem mit der Variablenzuweisung und hoffe,
es kann mir jemand dabei helfen.

Wenn ich die Variable "tn" trace´, zeigt er mir den richtigen
Inhalt an, doch sobald ich sie an eine andere Variable anhängen
möchte, klappt es nicht mehr. Ich möchte somit an den Inhalt
der Variable _root[game1]; kommen, die mit Werten aus dem
Array gefüllt ist. Vielen Dank!

Code:
i=0;
while(i < array_tage.length) {         
        _root["game"+(i+1)] = array_tage[i];      
  i++;
}

tn = 1;

trace(tn);

_root["game"+tn]._alpha = 50; // funktioniert nicht
_root[game1]._alpha = 50; // funktioniert

_root["game"+tn].onPress=function(){
  ...
}
macmasterflash ist offline   Mit Zitat antworten
Alt 22-01-2012, 19:15   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Was genau steht denn im array_tage? Sind das Strings oder Referenzen auf irgendwelche MovieClips oder Schaltflächen?

Außerdem frag ich mich warum Du die diese sauber in einem Array vorliegenden Werte dynamisch in die _root schreibst? Das bringt doch keinerlei Vorteile und schafft dort nur Chaos!
__________________
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!
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 22-01-2012, 19:30   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Hallo,

in "array_tage" werden zu aktivierende MovieClip-Namen aus PHP
geladen. Also ein String, der in das Array geschrieben wird und anschließend der Variable game1, game2 usw. zugewiesen.

Wenn ich also "_root[game1]._alpha = 50;" anspreche, wird
MovieClip "mein_mc_1" angesprochen und auf Alpha 50 gesetzt.

Mit dem Zusatz "tn" geht es leider nicht.

Nach _root geht alles, damit ich es wieder finden kann :-)
Bin da noch nicht so firm drin... Danke
macmasterflash ist offline   Mit Zitat antworten
Alt 22-01-2012, 20:08   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
irgendwo wird das Array ja erstellt, dort steht vermutlich irgend sowas:
PHP-Code:
array_tage irgendEinString.split("trennzeichen"); 
pack mal folgenden Code direkt dahinter:
PHP-Code:
for(var i=0i<array_tage.length; ++i){
    
//hier werden die Namen durch Referenzen auf die MCs ersetzt
    
array_tage[i] = _rootarray_tage[i] ];    

danach sollte folgendes laufen:
PHP-Code:
tn 1;
trace(tn);

array_tage[tn]._alpha 50;

//Edith: array_tage ist 0-indiziert; tn=1 bedeutet also den 2. Eintrag im Array, 
//nicht den ersten. der ist bei tn=0 ! 

Zitat:
_root[game1]._alpha = 50; // funktioniert
weil das gleichbedeutend ist, mit folgendem:
PHP-Code:
_root_root.game1 ]._alpha 50;
//alias
_root_root["game1"] ]._alpha 50;
//oder auch
_rootarray_tage[0] ]._alpha 50;
//oder
_root["mein_mc_1"]._alpha 50
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (22-01-2012 um 20:24 Uhr)
thomas_E ist gerade online   Mit Zitat antworten
Alt 22-01-2012, 21:55   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Vielen Dank!

Das hier hat mir geholfen:
PHP-Code:
array_tage[i] = _rootarray_tage[i] ]; 
macmasterflash ist offline   Mit Zitat antworten
Alt 22-01-2012, 22:48   #6 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
und hast du jetzt trotzdem alles in _root reingeschmissen?
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist gerade online   Mit Zitat antworten
Alt 23-01-2012, 07:56   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Danke für die Nachfrage :-)

Ehrlich gesagt ja! So kann ich Sie einigermaßen wieder aufrufen. Ich weiss, dass es noch "this" und ohne Zusatz gibt. Aber wann und von wo sie angesprochen werden können, musss ich noch lernen.

Hatte früher nur und bis vor einer Woche, für Animationen mit Flash gearbeitet und mehr in PHP und MySQL gemacht.

Grüße
macmasterflash ist offline   Mit Zitat antworten
Alt 23-01-2012, 08:46   #8 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Dann speicher' wenigstens nur das Array in _root und nicht alle Einzelobjekte!
__________________
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!
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 23-01-2012, 09:05   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Danke für den Hinweis...

Gibt es, wenn alles auf (_root), irgendwelche Sicherheitsprobleme?

Soll nicht heißen, das ich mich damit nicht beschäftigen werde ;-)

Merci
macmasterflash ist offline   Mit Zitat antworten
Alt 23-01-2012, 09:57   #10 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von macmasterflash Beitrag anzeigen
Gibt es, wenn alles auf (_root), irgendwelche Sicherheitsprobleme?
Das Problem der _root ist nicht in erster Linie die Sicherheit, sondern die Tatsache, dass es sie in jeder Anwendung (incl. aller nachgeladenen SWFs) nur genau einmal gibt. Und wenn dann jedes Modul seine Objekte in die _root schreibt, führt das dazu dass...
  • ...jedes Modul immer nur einmal pro SWF ausgeführt werden darf, weil es sonst allen anderen Instanzen die Variablen überschreibt.

  • ...verschiedene Module sich versehentlich gegenseitig in den Variablen rumpfuschen und es so zu einem kaum nachvollziehbaren Fehlverhalten kommt.
Kurz: _root (und auch _global) verhindern den modularisierten Aufbau einer Anwendung und sollten deshalb (wenn irgend möglich) nicht verwendet werden.

Stattdessen gilt, die Regel, dass sich jedes Objekt zunächstmal nur um seinen eigenen ****** kümmern sollte und deshalb auch seine Variablen und Funktionen im lokalen Namensraum hält. Diesen kann man meistens über this ansprechen. Allerdings ist die Sache mit this in AS1/2 tatsächlich nicht ganz so einfach wie in AS3 (da braucht man es nicht mal), weil es hierzu dem Objekt gehört, in dem das aktuelle Script aufgerufen wird, und nicht (wie in AS3) zu dem, in dem es deklariert wurde.
__________________
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!
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 23-01-2012, 10:27   #11 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Super! Danke für deine Erklärung und Zeit!

Wenn ich es richtig verstanden haben bedeutet das:

Variable in Film Level 0 : _root.var_1 = "Hallo";
Variable in Film Level 1 : _root.var_1 = "ByeBye";

_root.var_1 ist "ByeBye";

---------------------------------

Variable in Film Level 0 : this.var_1 = "Hallo";
Variable in Film Level 1 : this.var_1 = "ByeBye";

_root.var_1 ist "Hallo";

???
macmasterflash ist offline   Mit Zitat antworten
Alt 23-01-2012, 10:40   #12 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
  • Was ist bei Dir Level 0 und Level 1 (Ebenen oder MovieClips)?
  • Auf welchen Frames steht das Script?
  • Wie läßt Du Dir den Wert ausgeben?
__________________
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!
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 23-01-2012, 10:44   #13 (permalink)
Neuer User
 
Benutzerbild von maybe
 
Registriert seit: Nov 2006
Beiträge: 195
Zitat:
Zitat von macmasterflash Beitrag anzeigen

Variable in Film Level 0 : this.var_1 = "Hallo";
Variable in Film Level 1 : this.var_1 = "ByeBye";

_root.var_1 ist "Hallo";

???
Nein, in dem Fall ist _root.var_1 undefined;

_root.film1.var_1 ist "hallo"
und
_root.film2.var_1 ist "ByeBye"

also, wenn deine Filme entsprechene Instanznamen haben.
__________________
The hardest part of conception is getting bright ideas past dim people.
maybe ist offline   Mit Zitat antworten
Alt 23-01-2012, 11:28   #14 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
MK hat in seiner Signatur schöne Links eingesetzt. Diese werde
ich mir ersteinmal vornehmen, bevor ich euch weiter mit Anfängerfrage
belästige :-)

Vielen Dank an alle...
Gruss
macmasterflash ist offline   Mit Zitat antworten
Alt 23-01-2012, 11:59   #15 (permalink)
Neuer User
 
Benutzerbild von maybe
 
Registriert seit: Nov 2006
Beiträge: 195
Zur Verdeutlichung ein doofes Beispiel

Die Klasse "Fahrrad" hat "Reifen" "Lenker" und "Klingel" und eine
Funktion lenken(){
this.Lenker.lenken;
}

Du hast ein Fahrrad und Dein Bruder hat ein Fahrrad der Klasse "Fahrrad".

Wenn Du jetzt bei Deinem Fahrrad "lenken" auslöst, lenkt nur Dein Lenker und nicht der des Fahrrads Deines Bruders.

Bei Deiner "_root."-Konstruktion besteht immer die Gefahr, dass der falsche Lenker lenkt.
__________________
The hardest part of conception is getting bright ideas past dim people.
maybe ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
abfrage, dynamische variablen, variablen übergeben, variablen zusammensetzen, zuweisen

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
Durch Klick auf Link Variablen an Flash übergeben??? Uwe2005 Flash 8 2 14-09-2010 09:56
Variable Variablen in For-Schleife abfragen Sunyani ActionScript 3 4 20-05-2010 13:19
Ajax - mehrere Variablen übergeben bzw. abfragen. Kojak JavaScript & jQuery 3 05-01-2010 21:07
Variablen durch for-schleife erzeugen dixi Flash MX 3 26-01-2005 10:49
x und y position per for-schleife an variablen übergeben MrManson ActionScript 1 4 09-10-2004 22:05


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele