| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Illumensch Registriert seit: Dec 2002
Beiträge: 404
|
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...");
}
}
}
} PHP-Code: Code: trace(eintraege.currentTarget.data); 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!! |
| | |
| | #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 |
| | |
| | #3 (permalink) |
| Illumensch Registriert seit: Dec 2002
Beiträge: 404
|
... also - das PHP Problem konnte gelöst werden. So funktioniert es: PHP-Code: ![]() 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() |
| | |
| | #5 (permalink) |
| Illumensch Registriert seit: Dec 2002
Beiträge: 404
| Klappt leider auch nicht. Mit ActionScript:
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? |
| | |
| | #6 (permalink) |
| flachzange 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.
__________________ |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ä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 |