Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-04-2010, 09:18   #1 (permalink)
Illumensch
 
Benutzerbild von das-essig
 
Registriert seit: Dec 2002
Beiträge: 404
Question PHP-Problem beim Highscoreliste von AS1/2 nach AS3 "übersetzen"

Servus zusammen,

ich bin endlich dabei AS3 zu lernen und versuche nach und nach meine Spiele bzw. vorerst einmal nur Teile davon zu "übersetzen".

Das Problem was ich momentan habe ist, dass mein PHP Script zwar für AS1/2 funktioniert, aber AS3 nichts damit anfangen kann. Ich habe leider keine Ahnung, wo ich da anpacken müsste, damit es funktioniert.

HIER ist die alte AS1/2 Highscoreliste und HIER mein bisheriges AS3 Übersetzungs-Ergebniss, das leider nichts läd und folgende Fehlermeldung ausspuckt:
Error: Error #2101: Der an URLVariables.decode() übergebene String muss ein URL-kodierter Abfrage-String mit Name/Wert-Paaren sein.

Der AS3 Code schaut momentan so aus (! Baustelle ! - ist sicherlich noch nicht perfekt!):
Code:
package 
{
	import flash.display.MovieClip;
	import flash.text.*;
	import flash.geom.Rectangle;
	import flash.events.*;
	import flash.net.*;

	public class Highscore_as3 extends MovieClip
	{
		private var zeilen:uint;
		private var faktor:Number;
		private var nullpunkt_y:uint;
		private var ypos_scrollbar:Number;

		private var nr:String;
		private var nicks:String;
		private var dates:String;
		private var scors:String;
		private var zeits:String;

		private var bar:MovieClip;
		private var liste:MovieClip;
		private var maske_hs:MovieClip;
		private var hs_liste:MovieClip;
		private var scrollbar:MovieClip;

		private var re:URLRequest;
		private var vars:URLVariables;
		private var loader:URLLoader;
		private var resultVars:URLVariables;

		public function Highscore_as3()
		{
			addEventListener(Event.ADDED_TO_STAGE,auf_stage);
		}
		private function auf_stage(event:Event):void
		{
			liste_f();
			laden("base");
			faktor =0;
			scrollbar = new Scrollbar();
			scrollbar.x = 502;
			scrollbar.y = 0;
			nullpunkt_y = scrollbar.y;
			addChild(scrollbar);
			scrollbar.addEventListener(MouseEvent.MOUSE_DOWN, maus_drag);
			scrollbar.addEventListener(MouseEvent.MOUSE_UP, maus_stop);
			scrollbar.addEventListener(MouseEvent.ROLL_OUT, maus_stop);
			addEventListener(Event.ENTER_FRAME,loop);
		}

		private function weg_stage(event:Event):void
		{
			scrollbar.removeEventListener(MouseEvent.MOUSE_DOWN, maus_drag);
			removeEventListener(Event.ENTER_FRAME,loop);
			removeEventListener(Event.ADDED_TO_STAGE,auf_stage);
			removeEventListener(Event.REMOVED_FROM_STAGE,weg_stage);
		}
		private function liste_f()
		{
			var i=1;
			var zeilen=100;
			maske_hs=new Maske_hs();
			maske_hs.x=this.x;
			maske_hs.y=this.y;
			parent.addChild(maske_hs);
			liste = new Liste_komplett();
			addChild(liste);
			while (i <= zeilen)
			{
				bar=new Zeile();
				bar.alpha=.5;
				bar.x=-4;
				bar.y=bar.height * (i - 1);
				liste.addChild(bar);
				nr=i.toString() + ".";
				bar.hs_nr.text=nr;
				i++;
			}
			this.mask=maske_hs;
		}
		private function maus_drag(event:MouseEvent):void
		{
			ypos_scrollbar = maske_hs.height-scrollbar.height;
			scrollbar.startDrag(false,new flash.geom.Rectangle(502,0,0,ypos_scrollbar));
		}
		private function maus_stop(event:MouseEvent):void
		{
			scrollbar.stopDrag();
		}
		private function loop(event:Event):void
		{
			faktor = (liste.height-maske_hs.height)/ypos_scrollbar;
			nullpunkt_y = scrollbar.y*faktor;
			liste.y -= (liste.y+nullpunkt_y)/2;
		}
		private function laden(ort:String)
		{
			var link:String = "http://www.das-essig.com/";
			var hs:String = "demo_hs.php";
			re = new URLRequest(link+hs);

			loader = new URLLoader();
			loader.addEventListener(Event.OPEN, oeffnen);
			loader.addEventListener(Event.COMPLETE, fertig);

			vars = new URLVariables();
			vars.var1 = 5;
			vars.var2 = 4;

			resultVars = new URLVariables();

			re.data = vars;
			re.method = URLRequestMethod.POST;
			loader.load(re);

			function fertig(eintraege:Event)
			{
				trace(eintraege.currentTarget.data);
                                resultVars.decode(eintraege.currentTarget.data);
				trace("Das Ergebnis ist "+(resultVars.nick1)+" ("+(resultVars.score1)+")." );
			}
			function oeffnen(eintraege:Event)
			{
				trace("Starte... Ladung...");
			}
		}
	}
}
und das PHP File so:
PHP-Code:
$result_page=mysql_query("SELECT * FROM $table ORDER BY demo_score ASC, demo_id DESC LIMIT 0,100"); 
        if (
$myrow_page mysql_fetch_array($result_page))
        { 
            
$i 1
            do 
            {         
                
$nick rawurlencode ($myrow_page['demo_nick']); 
                
$score $myrow_page['demo_score'];
                
$zeit $myrow_page['demo_zeit'];
                
$date $myrow_page['demo_date'];
                echo 
"nick$i=$nick&score$i=$score&zeit$i=$zeit&date$i=$date"
                echo 
"&"
                
$i $i 1;  
            } 
            while (
$myrow_page mysql_fetch_array($result_page)); 
        } 
Was ich nicht verstehe ist, dass das erste Trace:
Code:
trace(eintraege.currentTarget.data);
folgendes ausgibt:
nick1=Spinne&score1=15&zeit1=2:15:32&date1=19.04.2 010&nick2=Batman&score2=50&zeit2=1:50:00&date2=19. 04.2010&nick3=Hulk&score3=80&zeit3=0:15:01&date3=1 9.04.2010&

Ich aber nicht an die einzelnen Variablen komme.

PHP müsste das also vermutlich irgendwie anders an Flash übergeben. Momentan ist das ein String, wenn ich richtig liege.

Die FLA und das .AS File habe ich gepackt und angehängt.

Ich würde mich sehr über ein paar Lösungsansätze freuen!!
Angehängte Dateien
Dateityp: zip hs.zip (22,9 KB, 3x aufgerufen)
__________________
Gruß

Essig


das-essig
das-essig ist offline   Mit Zitat antworten
Alt 20-04-2010, 10:03   #2 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Ort: Köln
Beiträge: 28
ich würde den Datenaustausch mit AMFPHP machen. Flash remoting for PHP: A responsive Client-Server Architecture for the Web

Vereinfacht vieles. Habe damit sehr gute Erfahrungen gemacht.

Grüße

Arne
arne_ ist offline   Mit Zitat antworten
Alt 28-04-2010, 13:45   #3 (permalink)
Illumensch
 
Benutzerbild von das-essig
 
Registriert seit: Dec 2002
Beiträge: 404
... also - das PHP Problem konnte gelöst werden. So funktioniert es:
PHP-Code:
$result_page=mysql_query("SELECT * FROM $table ORDER BY demo_score ASC, demo_id DESC LIMIT 0,100");
        if (
$myrow_page mysql_fetch_array($result_page))
        {
            
$i 1;
            do
            {
                
$nick $myrow_page['demo_nick'];
                
$score $myrow_page['demo_score'];
                
$zeit $myrow_page['demo_zeit'];
                
$date $myrow_page['demo_date'];
                if( 
$i ) {
                    echo 
"&";
                }
                echo 
"nick$i=".urlencode($nick)."&score$i=".urlencode($score)."&zeit$i=".urlencode($zeit)."&date$i=".urlencode($date);
                
$i $i 1;
            }
            while (
$myrow_page mysql_fetch_array($result_page));
        } 
... war einfach ein "&" Zeichen zu viel.

Gerade versuche ich das Script in mehrere .as Files aufzuteilen die ich dann ggf wiederverwenden kann. (Wie gesagt experimentiere ich noch - keine Ahnung ob das so der beste Weg ist.) Theoretisch tut es auch - es gibt nur ein Problem beim Arrays auslesen in der "Highscore_Liste.as" Datei und ich weiß nicht warum es da hängt.

Ich habe alles mal angehängt:
highscore.zip --> Highscore_Liste.as --> Zeile 46 , 59 und 60.

Die Daten/Variablen/Arrays kommen an, wo sie hinsollen (denke ich zumindest) und könne nauch über ein Trace ausgelesen werden. Die lassen sich nur nicht Textfeldern zuweisen - und ich habe keine Ahnung warum.

In meiner ersten Version in der alles in einem .as File stand, hat es genau so geklappt.

Jetzt kommt diese Fehlermeldung
Code:
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
	at Highscore_Liste/liste_f()
	at Highscore_Liste/init()
	at master/hs_funk()
	at master/hs_but()
Würde mich sehr freuen, wenn mir jemand helfen könnte. Ich komme einfach nicht drauf wo mein Denkfehler ist. Früher mit _root war alles so eifnach - ich bin noch nicht ganz dahinter gekommen, wie ich Variablen, MCs, Funktionen etc richtig anspreche/übergebe usw.
Angehängte Dateien
Dateityp: zip highscore.zip (57,0 KB, 2x aufgerufen)
__________________
Gruß

Essig


das-essig
das-essig ist offline   Mit Zitat antworten
Alt 29-04-2010, 09:19   #4 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
Versuch das mal auszutauschen:

ActionScript:
  1. resultVars.decode(eintraege.currentTarget.data);

in

ActionScript:
  1. resultVars.decode(loader.data);
__________________
elias ist offline   Mit Zitat antworten
Alt 29-04-2010, 09:35   #5 (permalink)
Illumensch
 
Benutzerbild von das-essig
 
Registriert seit: Dec 2002
Beiträge: 404
Zitat:
Zitat von elias Beitrag anzeigen
ActionScript:
  1. resultVars.decode(loader.data);
Klappt leider auch nicht.

Mit
ActionScript:
  1. resultVars.decode(eintraege.currentTarget.data);

kann ich ja in der Highscore_Liste.as die Arrays austracen - es scheint nur die Zuweisung in die Textfelder nicht zu klappen, weil irgend ein Objekt nicht / noch nicht da ist oder falsch angesprochen wird... .

Kann es sein, dass die Adressierung unvollständig ist?
__________________
Gruß

Essig


das-essig
das-essig ist offline   Mit Zitat antworten
Alt 29-04-2010, 13:41   #6 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
Ja die vermutung ist richtig, ich kann aber nicht genau sagen wo das problem liegt. Ich vermute mal bar.hs_nr ist nicht definiert. Schmeiss am besten mal den Debugger an und setzt einen breakpoint in der methode liste_f, dann solltest du sehen können was fehlt.
__________________
elias 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
[Flash CS3] Firefox läd MovieClip erst beim "sichten" ("onView") elecdream Flash Einsteiger 3 13-03-2009 11:59
kleines Feuerwerkskript von AS1 nach AS2 "übersetzen"? SaenOneNBC ActionScript 2 4 12-10-2008 17:06
kurzes ps tutorial bitte mal "übersetzen" timbojones Am Rande 9 14-03-2007 18:27
Subleiste beim mitgeliefterten XML Menü "v_registerkarten.fla" nach oben platzieren daniel_k Flash mit XML und Webservices 1 06-06-2003 11:22
kann mir jemand diese paar zeilen script "übersetzen"?? youshi Flash MX 3 18-08-2002 12:59


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele