Zugriffsproblem

elfvyn

Mitglied
Hallo zusammen
Erstmal zur Umgebung. ich arbeite mit Adobe Flash CS3 ActionScript 3.
Ich habe versucht das Problem so weit zu reduzieren wies geht ^^.
Ich habe ein Objekt Anzeige_mc das beim Filmstart ausgeblendet ist!
Mittels eines Buttons möchte ich das Objekt nun einblenden!

Also ich habe folgenden Aufbau:

Film_fla:
- Ebene 1 Button_mc (Instanzname button)
- Ebene 2 Anzeige_mc (Instanzname anzeige)

1. Habe ein neues Projekt angelegt (name Film_fla)
2. Habe einen mc erzeugt Button_mc, dieser ist jetzt Teil meiner Bibliothek!
3. Habe einen mc erzeugt Anzeige_mc, dieser ist jetzt Teil meiner Bibliothek!
4. Habe eine Instanz von Button_mc und Anzeige_mc erzeugt, jeweils in einer eigenen Ebene! Und dem jeweiligen Objekt einen Instanznamen zugeordnet!
(button und anzeige).
-->Bisher habe ich nichts in AS3 per Hand eingegeben(Ausgenommen der Button aber den lass ich jetzt mal raus)!

Jetzt will ich mit dem Button die Anzeige ein und ausblenden!
Wenn ich auf Film_fla ebene einfach mal (anzeige.visible=false)
reinhacke wird wie erwartet "anzeige" beim Filmstart nicht angezeigt!
Jetzt will ich aber das der Button dies beeinflussen kann. Der Button funktioniert
und ist auch soweit getestet. Wie komme ich aus dem Button (Click Methode) an mein anzeige-Objekt?
Beim ausführen bekomme ich folgende Fehlermeldung:

TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich. at Film_fla::Button/clk()

Muss ich da per Hand noch irgendwas erzeugen was mir die Umgebung nicht abnimmt?

danke schonmal im vorraus
 
Hallo,

der Fehler tritt auf, wenn du Objekte oder deren Methoden aufrufst, ohne das sie vorhanden sind. Dein Skript sollte etwa wie folgt aussehen:

Code:
var anzeige: MovieClip;
var button: MovieClip;

function init (): void {
   anzeige.visible = false;
   button.addEventListener ("click", handleClick);
} 

function handleClick (a_event: Event): void {
   anzeige.visible = !anzeige.visible;
}

init();

Nun gehst du auf die Dokumenteinstellungen und dann auf die Actionscript 3.0-Einstellungen und machst den Haken beim Eintrag "Bühneninstanzen automatisch deklarieren" weg. Nun musst du jede Bühneninstanz mit der du skripten willst per "var" neu deklarieren (Siehe oben).
Das sollte eigentlich funktionieren.

Gruss
 
Danke schonmal, klappt aber immer noch nicht.

Wo kommt denn der Bezug auf das eigentliche Objekt dann her?
Wenn ich meinen MC aus der Bibliozhek in meine Szene ziehe und über die Eigenschaftsleiste dem Objekt einen Instanznamen gebe,
"anzeige" zB... dann hab ich doch schon eine Instanz? Oder nicht? Oder muss ich
diese jetzt auch noch mit "var anzeige: MovieClip;" in AS der Szene angeben?
Da bekomm ich dann folgende Meldung:

1151: In Definition Login im Namespace internal liegt ein Konflikt vor.

Wies in AS2 geht weiss ich^^, da komm ich ja über level0 an alles ran, aber nicht wies hier geht ;-).

danke schonmal im vorraus
 
Zuletzt bearbeitet:
Hallo,

den Fehler bekommst du, wenn du den Haken (siehe oben) nicht wegmachst. Entweder Haken raus oder die Variablendefinition für die Anzeige raus.

Gruss
 
Zurück