Matze: Flash/ActionScript 3 - Verfügbarkeit eines Objekts

Hallo!

Heuer wurde mir Flash vor die Nase gesetzt, aufdaß ich mich damit beschäftige.
Ich hab mir also heut die Zeit genommen und ein paar Tutorials gesucht.

Ich hab da aber irgendwie ein Verständnisproblem denn meine erstellten Objekte sind im AS unbekannt.

Beispiel:
Ich erstell mir eine neue Datei, den ersten Layer nenne ich "layer1", dann erstell ich mir in der Bibliothek eine neue Grafik und nenne sie, des Beispiels wegen, "myKreis".
Auf dessen Ebene zeichne ich im ersten Frame einen Kreis. Fertig.
Jetzt wechsel ich wieder zur ersten Szene "Szene 1" und schreibe im ersten Frame ein ActionScript

import flash.events.MouseEvent;

myKreis.addEventListener(MouseEvent.MOUSE_DOWN, handleElementMoves);
myKreis.addEventListener(MouseEvent.MOUSE_UP, handleElementMoves);

function handleElementMoves(e):void {
if(e.type == MouseEvent.MOUSE_DOWN){
this.startDrag(false);
}else if(e.type == MouseEvent.MOUSE_UP){
this.stopDrag();
}
}

Der Kompiler sagt mir dazu
Scene 1, Layer 'layer1', Frame 1, Line 3 1120: Access of undefined property myKreis.

Könnte mir jemand sagen wo mein Fehler liegt?
Wieso ist "myKreis" undefined wenn ich die Grafik doch ebend selbst erstellt und benannt habe?

Danke und Grüße, Matze

  1. Du hast sie wahrscheinlich nicht als AS-Symbol exportiert.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
    1. Hallo LX!

      Du hast sie wahrscheinlich nicht als AS-Symbol exportiert.

      danke für den Hinweis!
      Also ich habe jetzt die Eigenschaften der Grafik bearbeitet.
      Sieht so aus, als ob AS nicht auf Grafiken angewendet werden kann, also habe ich einen MovieClip daraus gemacht und einen Haken in das Feld "Export for ActionScript".
      Jetzt gefällt dem Compiler aber addEventListener nicht mehr.

      Scene 1, Layer 'layer1', Frame 1, Line 3 1061: Call to a possibly undefined method addEventListener through a reference with static type Class.

      Hast du da noch eine Idee?

      Danke und Grüße, Matze

      1. Wo steckt Dein Script? Im ersten Frame? Bei AS3 ist im Vergleich zu AS2 einiges an Objektorientierung hinzugekommen, so dass möglicherweise eine Klasse benötigt wird, um auf die Event-Methoden zuzugreifen.

        Gruß, LX

        --
        RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
        1. Wo steckt Dein Script? Im ersten Frame? Bei AS3 ist im Vergleich zu AS2 einiges an Objektorientierung hinzugekommen, so dass möglicherweise eine Klasse benötigt wird, um auf die Event-Methoden zuzugreifen.

          Ja, im ersten Frame der Szene die den MC enthält.
          Wenn das Script im MovieClip selbst notiere, z.B. this.addEventListener, funktioniert das auch.

          Ich hätte aber zumindest gern die, vom EventListener aufgerufene, Funktion nicht im MC, sondern, übergeordnet in meiner Szene damit ich sie auch von anderen Elementen heraus aufrufen kann.
          Aber wenn ich die Funktion getrennt vom EventHandler in die Szne schreibe, ist dem Compiler die aufgerufene Funktion unbekannt.

          Symbol 'myKreis', Layer 'Layer 1', Frame 1, Line 3 1120: Access of undefined property handleElementMoves.

          Ich habe auch parent.handleElementMoves und this.parent.handle[..] probiert, aber dann erhalte ich diesen Fehler

          Symbol 'myKreis', Layer 'Layer 1', Frame 1, Line 3 1119: Access of possibly undefined property handleElementMoves through a reference with static type flash.display:DisplayObjectContainer.

          Die möchte die Funktion gern übergeordnet haben, damit ich sie auch aus anderen Elementen heraus aufrufen kann.

          Grüße, Matze

  2. Hallo,

    ich habe dem Element zwar überall einen Namen gegeben, aber nicht dessen Instanz. Das war mein Fehler.

    Grüße, Matze