Dieter Raber: ACTIONSCRIPT 3 - Klassenvariablen dynamisch deklarieren

Hallo,

ich arbeite mich gerade in Actionscript 3 ein und versuche folgendes (ich spar mir mal die Feinheiten im Code, es geht ums Grundverstaendnis)

  
package foo {  
  
  class bar {  
  
    function bar() {  
  
      // zunaechst werden Daten eingelesen, die im weiteren Verlauf  
      // als key:value pairs vorliegen, soweit geht alles gut  
      // Der naechste Schritt scheitert:  
  
      this[key] = value;  
    }

Das wirft den Fehler
1119: Access of possibly undefined property key through a reference with static type foo:bar.

Warum und weshalb leuchtet mir auch ein, da key ja nicht deklariert wurde.
Meine Frage ist, ob man key irgendwie on-the-fly deklarieren kann, denn so wie ich es aus PHP oder Javascript kenne, geht es offenbar ja nicht.

Gruss

Dieter

  1. ob man key irgendwie on-the-fly deklarieren kann, denn so wie ich es aus PHP oder Javascript kenne, geht es offenbar ja nicht.

    Disclaimer: Ich habe keine Ahnung von ActionScript.

    Aber ich habe mal gehört, dafür gibts spezielle dynamische Klassen.

    dynamic class bar { ... }

    Such mal nach »dynamic classes actionscript«.

    Mathias

    1. Hi Mathias,

      Disclaimer: Ich habe keine Ahnung von ActionScript.

      Ich bin zumindest soweit mittlerweile, dass ich nicht mehr an jeder Huerde verzweifele, bis zur Ahnung ist es wohl noch ein Stueck Weg. Ich meine aber, dass Du Dir Actionscript unbedingt einmal anschauen solltest. Zwar musst Du einiges, was in Javascript als wahr und gut gilt, zur Seite legen, aber diese Sprache macht echt Spass. Insbesondere gibt es bei uns in der Firma Ueberlegungen, zukuenftig mehr Flash/Flex einzusetzen. Man kann das auch eigentlich ganz vernuenftig machen, entweder, indem man sinnvoll befuellte HTML-Elemente via JS durch eine schicke Flashanwendung ersetzt oder aber im Adminbereich, wo man in der Regel von bestimmten Systemvorraussetzungen ausgehen kann.

      dynamic class bar { ... }

      Ich hab das mal ein bisschen gegoogelt und das scheint tatsaechlich der richtige Weg zu sein, danke fuer den Hinweis!