« Programmierer | Hauptseite | Deutsche Sprache »

Flash Win vs. Flash Mac OSX

Das MM bisweilen ab und an teilweise unausgereifte Software als Final Releases in Umlauf bringt, ist wohl jedem ernsthaften Entwickler bekannt. Das die Mac OSX Version von Flash MX 2004 Prof. so derbe Macken hat, dass der Entwickler nie sicher sein kann ob dessen ActionScript Code wirklich funktioniert, obwohl er/sie sich an die Referenzen hält, ist der Hammer. Folgendes Beispiel: In einer Klasse taucht folgendes Konstrukt auf, um ein Button-Event mittels einer for in Schleife der Buttoninstanz in dem jeweiligen MovieClip aus dem Array modules zuzuweisen: function initClips() { for(var i in modules) { .... _root[modules[i]].button.i = i; _root[modules[i]].button.onRollOver = function() { _root[modules[this.i]].setModulActive(); } ... } } ist die Mac Variante. Flash interpretiert die Event-Function als neues Object (in Flash sind functions Objekte). Dadurch verliert die Event-Funktion den Inhalt der Variablen i. Um immer den richtigen Array-Wert von modules ansprechen zu können, wurde mittels _root[modules[i]].button.i = i eine neue Variable i für die jeweilige Buttoninstanz button erzeugt und initilisiert. Somit kann der Event auf das richtige Objekt im _root verweisen. Da aber ein Button ein eigenständiges Objekt ist, sollte es doch möglich sein mit this._parent.setModulActive(); auf das Elternelement (MovieClip) zu referenzieren und somit die Funktion setModulActive(), welche nur den Movieclips aus dem Array modules zugewiesen ist, ausführen zu können? Ja, aber bitte nur, wenn DU den Code unter Windows entwickelt und das SWF erzeugt hast! function initClips() { for(var i in modules) { ... _root[modules[i]].button.onRollOver = function() { this._parent.setModulActive(); } ... } } Ist die Variante unter Win, welche wohl bei solch einer Art von Zuweisung auch Sinn ergibt. Okay, Bugs und Fehler gibt es in jeder Software. Aber um darauf zu kommen, dass man unter Mac OSX in dieser Version von Flash einen anderen Weg gehen muss, hat mich doch etwas Zeit, Nerven und Unverständnis gekostet. Denn was bringt es mir, am PC im Büro zu entwickeln und mich zu Hause zu wundern, dass unter OSX meine Scripte nicht funktionieren? Und, heute Abend werde ich testen können, ob die zweite Variante überhaupt im Flashplugin aufm Mac funtzt. Nächstes Ärgernis: der Debugger. Bei Flashentwicklungen, in denen viel gescripted wird, ein doch sehr hilfreiches Unterstützungstool. Nicht so unter OSX. Der Debugger spinnt mehr als man denkt. Eine Nachfrage an einen Kollegen erbrachte, dass ihm bekannt war, dass unter Flash MX für Mac der Debugger sehr buggy war. Der Satz in der Mail "... sie sollen angeblich was daran verbessert haben, aber wie gut, kann ich nix sagen. ..." bestätigte nur meine Vermutung: das Teil kannste vergessen!

Debugger unter Mac OSX Debugger Mac OSX

Debugger unter Win2k Debugger Windows

Die Windows Variante ist richtig und brauchbar. Die Instanzen unter _level0.tboxes sind dort, wo sie hingehören und ich kann sehen, ob diese Instanzen auch wieder gelöscht werden und ob die Enthaltenen Variablen alle korrekt gesetzt sind. Im Mac pfeffert der Debugger die Instanzen an _level0.submenu. .., _level0.tboxes bleibt leer und keine Ahnung wie die Variableninhalte lauten. Nach 10 x Klicken auf einen Link im SWF bedankte sich Flash dann mit einer Meldung, dass das Programm geschlossen werden muss, wegen einem schwerwiegenden Fehler. Am liebsten würde ich MM die Version MX 2004 Prof. für Mac um die Ohren hauen.

Ãœber diese Seite

Diese Seite enthält einen einzelnen am 21.05.04 17:33 erschienenen Blogeintrag.

Zuvor erschien in diesem Blog Programmierer.

Danach erschien Deutsche Sprache.

Viele weitere Einträge finden Sie auf der Hauptseite und im Archiv.

Powered by
Movable Type 3.35