Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-02-2009, 22:18   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 84
Red face Farbe mit dynamischer Variable vergeben

Hallo,

ich habe nun alles auf das kleinste reduziert und dennoch Ich steh aufem schlauch und seh den Fehler nicht.

Was ich möchte:
Variable per PHP in Flash einlesen, die Variable in Flash dann in ner if Schleife verarbeiten um so ne Farme vergeben zu können.

PHP (flashtest.php)

PHP-Code:
<?php

$lrusy 
"1";
print 
$lrusy;

print 
"&lrus=$lrusy";
?>
AS

Code:
onClipEvent(load) {

loadVariables("URL\flashtest.php", this, "GET");

	if (lrus == 1) {
myColor = new Color(rus);
myColor.setRGB(0x9c0000); 
	} else if (lrus == 2) {
myColor = new Color(rus);
myColor.setRGB(0x000083); 		
	} else if (lrus == 3) {
myColor = new Color(rus);
myColor.setRGB(0x004b00); 		
	} else if (lrus == 4) {
myColor = new Color(rus);
myColor.setRGB(0xffff00); 		
	} else if (lrus == 5) {
myColor = new Color(rus);
myColor.setRGB(0x930093); 		
	} else if (lrus == 6) {
myColor = new Color(rus);
myColor.setRGB(0x000000); 		
	} else {
myColor = new Color(rus);
myColor.setRGB(0xf7f7f7); 		
	}
}
Die Farbe wird einfach nicht übernommen da der Wert von lrus nicht ausgelesen wird. Warum? Wenn ich anstatt
Code:
loadVariables("URL\flashtest.php", this, "GET");
dies schreibe
Code:
lrus = 1;
dann geht es. Muss also was mit der Übertragung sein. Stehe aber komplett neben mir.

Danke für simple Hilfe.
Gruß Nick.
lordnick ist offline   Mit Zitat antworten
Alt 05-02-2009, 07:56   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Die Farbe wird einfach nicht übernommen da der Wert von lrus nicht ausgelesen wird. Warum?
Weil loadVariables genau wie alle anderen Ladebefehle in Flash asynchron ablaufen, d.h. du hast nicht sofort in der nächsten Mikrosekunde einen Response. Und das wiederum bedeutet, dass du bspw. einen onData-Callback setzen solltest, der den Response abfängt. Erst dann kannst du auf nachgeladene Daten zugreifen.

Besser ist allerdings die Verwendung der LoadVars-Klasse, siehe dazu mein Tutorial. Ich bin mir nur nicht sicher, ob die schon in MX funzt...
  Mit Zitat antworten
Alt 05-02-2009, 11:26   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 84
Vielen herzlichen Dank ersteinmal

Hab mal nachgeschaut und wird in MX unterstützt. Nun funktioniert es auch mit diesem AS:

Code:
onClipEvent(load) {

function geladen(erfolgreich) {
        if(erfolgreich) {
	
             	if (this.lrus == 1) {
myColor = new Color(rus);
myColor.setRGB(0x9c0000); 
	} else if (this.lrus == 2) {
myColor = new Color(rus);
myColor.setRGB(0x000083); 		
	} else if (this.lrus == 3) {
myColor = new Color(rus);
myColor.setRGB(0x004b00); 		
	} else if (this.lrus == 4) {
myColor = new Color(rus);
myColor.setRGB(0xffff00); 		
	} else if (this.lrus == 5) {
myColor = new Color(rus);
myColor.setRGB(0x930093); 		
	} else if (this.lrus == 6) {
myColor = new Color(rus);
myColor.setRGB(0x000000); 		
	} else {
myColor = new Color(rus);
myColor.setRGB(0xf7f7f7); 		
	}

        }
        else {
                trace("Fehler beim Laden");
        }
}

lv = new LoadVars();
lv.onLoad = geladen;
lv.load("URL/flashtest.php",lv,"GET");

}
Wie kann ich nun in einem dynamischen Textfeld diesen Wert aus lrus ausgeben? Hab dem Txtfeld den variablennamen lrus gegebn aber da tut sich nichts.

Ansonsten bin ich schon sehr glücklich... War wohl nur auf diese eine Variante verbissen...
lordnick ist offline   Mit Zitat antworten
Alt 05-02-2009, 12:35   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Nie Textfeldvars verwenden, nur Instanznamen. Und statt längerer if-else-Ketten solltest du besser eine switch-case-Anweisung nehmen.
PHP-Code:
function geladen(erfolgreich) {
        if(
erfolgreich) {
    
                 if (
this.lrus == 1) {
myColor = new Color(rus);
myColor.setRGB(0x9c0000); 
    } else if (
this.lrus == 2) {
myColor = new Color(rus);
myColor.setRGB(0x000083);         
    } else if (
this.lrus == 3) {
myColor = new Color(rus);
myColor.setRGB(0x004b00);         
    } else if (
this.lrus == 4) {
myColor = new Color(rus);
myColor.setRGB(0xffff00);         
    } else if (
this.lrus == 5) {
myColor = new Color(rus);
myColor.setRGB(0x930093);         
    } else if (
this.lrus == 6) {
myColor = new Color(rus);
myColor.setRGB(0x000000);         
    } else {
myColor = new Color(rus);
myColor.setRGB(0xf7f7f7);

   
_root.meineTextfeldinstanz.text this.lrus;         
    } 
  Mit Zitat antworten
Alt 05-02-2009, 13:49   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 84
Dankeschön.

Welchen Vorteil hat den eine switch-case-Anwendung? Ist doch im Grunde das selbe; if-else läuft ja auch nicht komplett durch sondern bricht ab wenn der Grund eingetreten ist. Oder irre ich da?

Würde das ganze dann nicht so aussehen?

Code:
 
switch (lrus)
{
case 1:
    myColor = new Color(rus);
    myColor.setRGB(0x9c0000); 
    break;
case 2:
    myColor = new Color(rus);
    myColor.setRGB(0x000083); 
    break;
case 3:
    myColor = new Color(rus);
    myColor.setRGB(0x004b00);
    break;
default:
    myColor = new Color(rus);
    myColor.setRGB(0xffff00);
}
oder müsste es anfangen mit
Code:
switch (this.lrus)
{
case 1:[...]
und muss die 1 bei case in Anführungsstichen oder nicht. Ich hab bissel gesucht und mal mit und mal ohne gesehen. Daher die Frage.

Gruß und danke für die Hilfe.
lordnick ist offline   Mit Zitat antworten
Alt 05-02-2009, 13:52   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
switch-case ist übersichtlicher und einfacher zu lesen...

Bei einem Response mit der LoadVars-Klasse kommt immer ein String an, wenn du eine Zahl benötigst, musst du noch casten.

Geändert von agedoubleju (05-02-2009 um 13:53 Uhr)
  Mit Zitat antworten
Alt 06-02-2009, 07:17   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 84
ok hat alles funktioniert wie ich es wollte. herzlichen dank für die gute und schnelle hilfe

bleiben die geladenen variablen denn den ganzen "flashfilm" über bestehen oder verfallen die irgendwann (also ab nächstem Frame, nächster Scene, nach xyz Minuten,...) ?

gruß
lordnick ist offline   Mit Zitat antworten
Alt 06-02-2009, 07:32   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Die bleiben normalerweise den ganzen Film über bestehen. Wenn dich das Thema näher interessiert, such mal nach "Garbage Collection"...
  Mit Zitat antworten
Alt 06-02-2009, 08:12   #9 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 84
sehr nützlicher hinweis - danke.
für diejenigen die es auch interessiert und davon noch nie was gehört haben hier eine URL für den ersten Überblick: http://www.zweigang.de/Blog/garbage-...unktionsweise/

gruß
lordnick 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 09:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele