Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-07-2005, 08:13   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 6
Exclamation Objektproblem

Ich habe mir eine eigene Klasse geschrieben, welche in Flash eine Matrix darstellt. So weit so gut, habe sie bislang über PHP echo Daten gefüttert aber das ist mir zu langsam und mache es nun mit XML. Ich versuche ohne Erfolg ein XML Objekt innerhalb meiner Klasse so zu verwenden, dass ich nach der onLoad Funktion mit dynamischen und nicht statischen Funktionen weiterarbeiten kann. Hier der Teilcode:

ActionScript:
  1. private function buildMatrix() {
  2.         trace("build");
  3.         var tempXML:XML = new XML();
  4.         tempXML.ignoreWhite = true;
  5.         switch(_global.state) {
  6.             case "global":  tempXML.load("global.xml");
  7.                             break;
  8.         }
  9.         tempXML.onLoad = function(success) {
  10.             if  (success) {
  11.                 //X-Achse auslesen
  12.                 var x_xml = this.childNodes[0].childNodes[0].childNodes;
  13.                 AbszisseTo = [];
  14.                 for (var x = 0; x<x_xml.length; x++) {
  15.                         AbszisseTo.push(x_xml[x].attributes.value);
  16.                 }
  17.                 trace(AbszisseTo);
  18.                 this._parent.loadedMatrix();
  19.                 delete(tempXML);
  20.             } else {
  21.                 trace("error");
  22.             }
  23.         }
  24.     }
  25.    
  26.     private function loadedMatrix() {
  27.         trace("loaded");
  28.         trace(AbszisseTo);
  29.     }

AbszisseTo ist ein privates Array der Klasse. Die onLoad Funktion funktioniert prima und das trace(AbszisseTo) innerhalb der onLoad Funktion gibt auch die gewünschten Werte aus. Nur das Problem ist: danach wird die Funktion "loadedMatrix" nicht aufgerufen und somit klappt auch das zweite trace nicht mehr. Aber weshalb? Ich vermute es hat etwas mit der Referenzierung der Objekte (XML und meine Klasse) zu tun, komme aber auf die Lösung, dass ich die funktion loadedMatrix ohne weiteres aus der onLoad Funktion heraus aufrufen könnte.

Ich habe das Ganze auch schon ausserhalb der Klasse in ein leeres FLA geschrieben und da hat es funktioniert... könnt ihr mir weiterhelfen? Danke!

Edit: gehört eigentlich in die OOP Sparte....

Geändert von resu (29-07-2005 um 08:23 Uhr)
resu ist offline   Mit Zitat antworten
Alt 29-07-2005, 09:23   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
so:
ActionScript:
  1. private function buildMatrix() {
  2.         trace("build");
  3.  
  4.         var tempXML:XML = new XML();
  5.         tempXML.ignoreWhite = true;
  6.         switch(_global.state) {
  7.                 case "global":  tempXML.load("global.xml");
  8.                 break;
  9.         }
  10.         var ref = this;
  11.         tempXML.onLoad = function(success) {
  12.                 if  (success) {
  13.                         //X-Achse auslesen
  14.                         var x_xml = this.childNodes[0].childNodes[0].childNodes;
  15.                         AbszisseTo = [];
  16.                         for (var x = 0; x<x_xml.length; x++) {
  17.                                 AbszisseTo.push(x_xml[x].attributes.value);
  18.                         }
  19.                         trace(AbszisseTo);
  20.                         ref.loadedMatrix();
  21.                         delete(tempXML);
  22.                 } else {
  23.                         trace("error");
  24.                 }
  25.         }
  26. }
  27.  
  28. private function loadedMatrix() {
  29.         trace("loaded");
  30.         trace(AbszisseTo);
  31. }
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 29-07-2005, 09:49   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 6
Danke! Hab das Ganze jetzt über einen kleinen Umweg gelöst, aber funktioniert wenigstens!
resu ist offline   Mit Zitat antworten
Alt 29-07-2005, 10:02   #4 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Was für ein Umweg? Könnte ja andere mit ähnlichem Problem interessieren …
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 29-07-2005, 10:16   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 6
Ich habe meine Klasse mit einem extends XML ausgestattet. Dann habe ich die onLoad Funktion innerhalb der Klasse überschrieben (benötige ja jetzt kein zusätzliches Objekt mehr) und konnte diese mit this.load("file") im Konstruktor aufrufen. Und aus dieser überschriebenen onLoad Funktion heraus ist es möglich, auf alle anderen Methoden der Klasse zuzugreifen.
resu 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 23:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele