Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-08-2003, 08:01   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Wien
Beiträge: 166
referenzen von variablen aus funktionen

hi,
langsam verzweifel ich vollkommen. ihr seid also meine letzte rettung.
ich habe eine funktion in der ich eine jsp mit der myXML.load("")-Methode aufrufe. das jsp gibt XM zurück, was auch alles funktioniert. So schaut der Code aus:

ActionScript:
  1. function readXML() {
  2.     myXML = new XML();
  3.     System.useCodepage = true;
  4.     myXML.load("SportLiveTicker.jsp");
  5.     myXML.ignoreWhite = true;
  6.     myXML.parseXML;
  7.     myXML.onLoad = Test();
  8.     myXML.onLoad = CreateMCs();
  9. }

In der Funktion CreateMCs() möchte ich auf das myXML zugreifen, was aber hinten und vorna nicht funktioniert. auch wenn ich den XML konstruktur an die funktion übergebe, funktioniert es nicht....

HIIIIIIIIIIIILFE !!!!!

mfg
Juro
JuRo ist offline   Mit Zitat antworten
Alt 23-08-2003, 08:45   #2 (permalink)
flashed Dude
 
Benutzerbild von tolleiv
 
Registriert seit: Mar 2002
Ort: _level0
Beiträge: 1.402
hallo

also so würde ich das notieren :
ActionScript:
  1. System.useCodepage = true; //das gehört in den ersten frame der swf
  2.  
  3. function readXML() {
  4.          myXML = new XML();
  5.         myXML.ignoreWhite = true;
  6.        // myXML.parseXML; ?? was sollte das ? kannste weglassen //
  7.         myXML.onLoad = function()
  8.         {
  9.            _root.createEmptyMovieClip("dummy",1);
  10.            _root.dummy.Test();
  11.            _root.dummy.CreateMCs(this);
  12.         }
  13.         myXML.load("SportLiveTicker.jsp");
  14. }
das setzt vorraus das du die funktionen als prototypes definierst also so :
ActionScript:
  1. movieclip.prototype.Test = function()
  2. {...}
  3. movieclip.prototype.CreateMCs= function(xml)
  4. {...}
  5. }

ich hab es nicht getestet aber das müsste laufen und zumindest der aufbau stimmt auf jeden fall

mfg
__________________
Die Basis unseres Denkens ist das der Verstand sich selbst erkennt.
Kyle Broslovski


Eigenlob stinkt ~ fast immer

Geändert von tolleiv (23-08-2003 um 08:47 Uhr)
tolleiv ist offline   Mit Zitat antworten
Alt 23-08-2003, 08:56   #3 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
eine wäre auch noch von vorteil....
ActionScript:
  1. myXML.onLoad = function(success)
  2. {
  3.     if (success) { ... }
  4. }
  5. // bzw.
  6. myXML.onLoad = function()
  7. {
  8.     if (this.loaded) { ... }
  9. }
wie man möchte
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 23-08-2003, 09:00   #4 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
müste doch gehen.
ActionScript:
  1. function readXML() {
  2. myXml = new XML();
  3. myXml.ignoreWhite = true;
  4. myXml.onLoad = function(success) {
  5.             CreateMCs();
  6. };
  7. myXML.load("SportLiveTicker.jsp");
  8. }
  9. function CreateMCs(){
  10.     var l = myXml.firstChild.childNodes[0].childNodes.length;
  11.     trace(l);
  12. }
  13. readXML()
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 23-08-2003, 13:19   #5 (permalink)
flashed Dude
 
Benutzerbild von tolleiv
 
Registriert seit: Mar 2002
Ort: _level0
Beiträge: 1.402
m ja müsste gehen aber brauchste denn ünbedingt diese createMCs funktion? das kannste doch auch gleich im onLoad machen oda ?

aber wenn das xml ok is das sollte das gehen

mfg
__________________
Die Basis unseres Denkens ist das der Verstand sich selbst erkennt.
Kyle Broslovski


Eigenlob stinkt ~ fast immer
tolleiv ist offline   Mit Zitat antworten
Alt 24-08-2003, 09:23   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Wien
Beiträge: 166
also. 1. danke für eure antworten....

@tolleiv:
myXML.parseXML; ... überprüft den syntax des xml und korrigiert einfache fehelr, die methode verhindert schwerwiegende einlese fehler
prototype ... damit definiere ich dann die funktion als "superclass" und kann sie von überall nur mit FunktionsName ansprechen?

@scrawer:
mach ich doch eh mit dem aufruf: myXML.onLoad = CreateMCs(myXML);

@hay:
hab ich auch gedacht, aber leider geht das nicht ....

@tolleiv:
natürlich könnte ich den funktionsblock direkt in das onLoad einfügen. der funktionsblock CreateMCs ist aber ziemlich lang, daher dachte ich, dass es eine bessere Idee ist, das auszugliedern.

@all:
ich muss die funktion readXML von überall aus aufrufen können, da ich möchte, dass sich das flash jede minute die jsp neu liest und damit etwaige Änderungen der Variablen einliest.

mfg
Juro
JuRo ist offline   Mit Zitat antworten
Alt 24-08-2003, 10:00   #7 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
also muss noch etwas verschlafen sein aber ich sehe bei deinen Scripts hier keine Fehlerbehandlung....
den onLoad gibt nun mal true oder false als Argument mit..... evtl ist es bei dir ja schon die ganze zeit false......
jedoch gibt es bei dir keine if abfrage in die Richtung.
ActionScript:
  1. _global.loadXML = function()
  2. {
  3.     var myXML = new XML();
  4.         myXML.ignoreWhite = true;
  5.         myXML.onLoad = getXML;
  6.         myXML.load("SportLiveTicker.jsp");
  7. };
  8.  
  9. _global.getXML = function(success)
  10. {
  11.     if (success)
  12.     {
  13.         trace(this) // <-- wenn hier nicht der ganze XML String ausgegeben wird liegt der Fehler nicht am AS Code   
  14.     }
  15.     else
  16.     {
  17.         trace("Error opening URL")
  18.     }
  19. };
  20.  
  21. loadXML();

der code läuft mal 100%... kannst ja zum test ein manuell erstelltes xml file in den selben ordner legen wo das swf und die html sich befinden.
Da wären wir auch schon bei den möglichen fehlern...
Der pfad zum xml file (in deinem fall jsp) muss relativ aus sicht der html datei angegeben werden welche das swf eingebunden hat.
Es muss natürlich alles in der selben SubDomain sein. Und du solltest sicher stellen das dein jsp auch richtig arbeitet.
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 24-08-2003, 10:22   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Wien
Beiträge: 166
hmmm, ich glaub da verstehst du was falsch. hier die definition des onLoad() Event Handlers (laut ActionScript for Flash MX - the definitive Guide von O'REILLY):

XML.onLoad() Event Handler
--------------------------------------------------------
executed when external XML data has been loaded and parsed

xmlDoc.onLoad(success)

Arguments
success A Boolean value indicating whether loading was successful (true) or unsuccessful (false).

......



wie du siehst, ist der onLoad() event handler schon eine if-ab frage, d.h. bei dem syntax

myXML.onLoad(irgendeinefunktion);

wird irgendeinefunktion erst dann aufgerufen, wenn das XML erfolgreich geladen wurde ....

mfg
roland
JuRo ist offline   Mit Zitat antworten
Alt 24-08-2003, 10:29   #9 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
schau.... ich kann auch damit leben wenn du mir nicht glauben möchtest......
zur Information... ich erstelle kaum eim swf.. das kein xml file aufruft.....
und versuch doch einfach mal das xml file wegzugeben... sprich das der load Aufruf ins leere geht da es das file nicht gibt...
dann wirst du merken das es vielleicht gar nicht so schlecht ist...... denn dann ist es False!!!!!!!

aber wie auch immer..... es gibt schon so viele Seiten die keine Fehlerbehandlung einbauen... in Flash... und diese auswerten.. wie error 404 , 403 usw....
eine mehr oder weniger spielt auch keine rolle mehr

das ist nun sehr unfein von mir... und gleich ein sorry hinterher...
nur ab und zu frage ich mich warum ich eine Lösung poste wenn dann die leute immer sagen.. ne das ist nicht nötig... und sie in frage stellen...
ich weis nur eines... bei mir funktioniert alles
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 24-08-2003, 11:10   #10 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Wien
Beiträge: 166
es freut mich natürlich sehr, dass bei dir alles funktioniert. ich habe dir auch nur gesagt, dass der onLoad() Event handler so wie so eine if Abfrage macht. wenn du noch ein if dahinter schachteln möchtest, von mir aus gerne (auch das habe ich schon bei vielen Programmierarbeiten gesehen).

natürlich ist eine sinnvolle Fehlerbehandlung wichtig, aber sie dafür gleich zweimal zu machen ist ja auch nicht wirklcih perfomant. jetzt kannst du natürlich sagen, dass das bei flash-dateien kein problem ist, wo du natürlich recht hast. ich bin halt der meinung, dass guter perfomanter programmierstil auch bie flash wichtig ist.

ich habe mich schon vorher für eure lösungen bedankt. trotzdem steht es mir zu die lösungen zu überdenken und mögliche fehler zu kommentieren. es geht ja hier um einen KONSTRUKTIVEN DIALOG und keine einsiete fragestunde.

und noch einmal konkret zu dem problem: wenn das xml nicht existiert, werden keine movieclips generiert. so einfach ist das und das ist auch das, was ich bezwecke!

mfg
juro
JuRo ist offline   Mit Zitat antworten
Alt 24-08-2003, 11:33   #11 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
mal direkt... wenn das File nicht existiert... wird onLoad auch aufgerufen.....
nur eben mit dem argument false...

du unterliegst hier einem großen Fehler

onLoad wird immer ausgeführt.. egal ob er was ladet oder Nichteinmahl das File findet... das ist auch gut und richtig so.. denn so kann man ja überhaupt erst eine Fehlerbehandlung einbauen... die Auftrennung ob es nun funktioniert hat oder eben ein Fehler passiert ist geht dann eben über eine if abfrage true/false....
denn würde onLoad nur ausgeführt wenn er auch Daten ladet.. wie du sagst...
wäre eine Fehlerbehandlung nie möglich... wie auch.. denn wo willst du denn einhacken...
und da es keine Metohode wie onError gibt (das gegenteil zu onLoad) wird eben mit
onLoad(true/false) gearbeitet.... MM hat sich halt für diesen weg entschieden.
Ok ich verstehe das du nicht so denkst da dir die Fehlerbehandlung egal ist...
Aber Fakt ist bei dir wird das Script auch ausgeführt.. nur das es halt keine Daten gibt... und im Script lauter Fehler passieren werden....

Ich versteh deine Ansicht auch gar nicht.. denn wenn du in die Flash Referenz schauen würdest.. steht es dort genau so drin...
Und es ist auch mehr als logisch...
Aber wie gesagt... jeder wie er denkt und möchte....
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 24-08-2003, 11:50   #12 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Wien
Beiträge: 166
wenn ich den ganzen filmablauf von dem onload abhängig mache, dann stimmt das schon. meine programmstruktur ist aber so gemacht, dass es egal ist, ob da wirklich mcs generiert werden oder nicht. daher brauche ich nur den success=true event.

wenn du spezifisch wissen musst, ob der event erfolgreich war, d.h. dass kein fehler beim lesen passiert ist, ist dein ansatz richtig. aber wie gesagt, ich brauch nur den success (wer nicht )

mfg
Juro
JuRo ist offline   Mit Zitat antworten
Alt 24-08-2003, 11:53   #13 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
ja aber du machst ja kein if (success) // true.... ?

daher wird es immer ausgeführt... auch wenn es die werte gar nicht gibt.. .das meinte ich ja...
ob du nun einen fehler ausgibst oder nicht ist ja egal......

aber aktionen schleifen laufen zu lassen denen die Daten fehlen.... ist nicht gerade schön
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 24-08-2003, 11:58   #14 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Wien
Beiträge: 166
stimmt.
wenn aber das onLoad nicht successful war, gibt es auch kein

myXML.firstChild.childNodes.length

und dann ist eine schleife

for (i=0; i < myXML.firstChild.childNodes.length; i++) {}

eh zimelich kurz
JuRo ist offline   Mit Zitat antworten
Alt 24-08-2003, 12:00   #15 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
naja..... da sag ich nun mal nix zu
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer 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 06:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele