Referenzen erzwingen? Objekte erstellen?

realpk

Mitglied
Hallo, ich habe folgende 2 Probleme:

Ich habe ein Objekt (Symbol),
dieses Symbol hat ja mehrere Eigenschaften.
In meinem Fall geht es um die Eigenschaft _visible.
Nun möchte ich aber eine Referenz (Zeiger) darauf erstellen.
Wenn ich zB vis = bla._visible schreibe wird dort ja nur der Wert zugewiesen.

Ich habe ein Symbol mit nem Namen xy.
Anfangs ist noch nicht klar wieviele Objekte ich davon benötige somit würde ich dies gerne dynamisch erstellen. Weiss jemand wie das bei Flash funktioniert.

Wenn möglich sollten diese auch mit Action Script 1.0 laufen.

Gruss und Dank
Tim
 
Hallo,

deine erste Frage versteh ich nicht ganz. Möchtest du anzeigen lassen, ob bei einem Objekt die Eigenschaft _visible auf true/false bzw 0/1 steht?

Natürlich kannst du dynamisch Objekte erstellen.
Sagen wir mal, du brauchst 15 Objekte desselben Typs, du möchtest die Objekte benennen und zwar mit dem Instanznamen "Object_" plus 1-15. Mit folgendem Code kannst du das realisieren:

PHP:
var anzahlObjekte = 15;

for (var i = 1; i <= anzahlObjekte; i++) {
   this["Object_"+i] = new Object();
}

Ich hoffe, ich habe dich richtig verstanden....
Solltest du mit "Objekt" MovieClips meinen, dann stimmt obiger Code natürlich nicht ganz, ich würd dann aber der Verständlichkeit halber nicht von Objekten, sondern von MovieClips sprechen, obwohl Letztere natürlich streng gesehen auch Objekte sind, jedoch mit einer eigenen Konstruktoren-Struktur und vielen spezifischen Eigenschaften/Methoden.


gruss
 
Zuletzt bearbeitet:
Hi,

zu 1: Was soll es bringen, vorhandene Objekteigenschaften zu wrappen? Du könntest Dir allerdings eine Klasse für das Objekt anlegen (schau dazu mal in die Referenz unter MovieClip.registerClass) und Getter/Setter für diese Eigenschaft erstellen. Diese Getter/Setter verhalten sich wie nicht schreibgeschützte Eigenschaften. Ich bezweifle allerdings, dass es den Aufwand lohnt, nur um statt _visible z.B. _sichtbar schreiben zu können. ;)

Zu 2: Hier verstehe ich wiederum die Frage nicht richtig: Die "mitgelieferten" Symbole (MovieClips, Schaltflächen usw.) verfügen immer über ihren Standardsatz an Eigenschaften. "Eigene" Objekte (sprich: Instanzen eigener Klassen) bringen die Eigenschaften mit, die Du in der Klasse definierst.

Gruß
.
 
Ersteinmal danke für das Beispiel. Mir ist leider noch nicht so ganz klar wie die Gültigkeiten, Vererbung etc bei Action Script ist.

Zu dem Instanzieren. Habe ich das richtig verstanden, dass wenn ich ein Symbol mit den Namen xy erstelle, dieses mit
Code:
bla = xy();
instanzieren kann?

Was ist bei dem Instanzieren von Movieclips anders?

Das wrappen der Objekteigenschaften ist nur für die bessere Übersicht:
Code:
v = object._visible;
v = true; // Ändert jedoch nur den Wert von v, benötige dafür eine Referenz
Habe noch eine kleine Frage:
Nehmen wir an ich möchte auf z.B. ein Symbol zugreifen:
this["Object_"+i]
Muss ich das nun noch casten oder macht das Flash für mich

Ok schonmal danke für die Mühe.
 
Hi,

1. Wenn es sich um Symbole in der Bibliothek handelt (z.B. MovieClips), dann "instanzierst" Du per attachMovie:
Code:
var foo = this.attachMovie("bar", "foo", 1);

Handelt es sich um eigene Klassen, so rufst Du (ggf. nach dem Import) einfach den Konstruktor auf:
Code:
import MyClass;

var foo = new MyClass();

Alle Komponenten, die von UIObject erben, lassen sich zudem auch per createClassObject()
instanzieren.

2. Eigene Getter/Setter kannst Du mit AS1.0 entweder über die Methode "addProperty" (siehe Referenz) erstellen, oder wie gesagt in eigenen Klassen:
Code:
	public function get sichtbar():Boolean {
		return this._visible;
	}
	
	public function set sichtbar(v:Boolean):Void {
		this._visible = v;
	}
(Aufruf dann z.B. mit myObject.sichtbar = false;)

3. Der Array-Zugriffsoperator "castet" quasi automatisch. Angenommen, Du hast auf der Bühne einen MC mit dem Instanznamen "foo1", so bekommst Du mit:
Code:
var bar = this["foo" + 1];
eine gültige Referenz auf diesen MC:
Code:
bar._visible = false; // würde den MC "foo1" unsichtbar schalten

Gruß
.
 
deshalb sagte ich ja z.B. MovieClips. ;)

Allerdings: Es gibt in der Praxis kaum einen Grund, Grafiken und Schaltflächen zu verwenden, in sofern ... ^^

Gruß
.
 
Ok ;)
Bin halt noch ein Anfänger.

Irgendwie klappt das nicht:

Code:
var xy = this.attachMovie("Symbol 1", "s1", 1);

Der Debugger sagt: xy = undefined

Ist nun xy das Symbol oder s1?

Danke für die Mühe :)
 
Hi,

die Syntax ist soweit schon korrekt, aber hast Du das Symbol auch zum Export für ActionScript freigegeben (schau mal in die Referenz unter "attachMovie": da steht mehr darüber)?

Gibst Du einen anderen Objektbezeichner ein, als den, in dem Du den Rückgabewert ablegst, so kannst Du das Objekt nach dem Instanzieren sowohl mit xy als auch mit this.s1 ansprechen.

Gruß
..
 
Zurück