Movie clip als Button oder umgekehrt ?

babeuf

Grünschnabel
Hallo Leute,

ich habe das Problem, dass ich anscheinend bei einem Objekt sowohl die Button-Eigenschaft als auch die Movie Clip - Eigenschaft brauche. Die Fläche des Objekts soll in
einer Zufallsfarbe erscheinen (klappt auch). Außerdem soll der MC aber anklickbar sein und diesen Code für den Button enthalten:
Code:
on (release) {
	q1answer = 3;
	gotoAndStop ("q2");
}

Der Code für die Zufallszahlen:
Code:
onClipEvent (load) {
	myNum = _name;
}
onClipEvent (enterFrame) {
	_root["r"+myNum+"Diff"] = _root["r"+myNum+"New"]-_root["r"+myNum+"Old"];
	_root["r"+myNum+"Change"] = _root["r"+myNum+"Diff"]/10;
	_root["g"+myNum+"Diff"] = _root["g"+myNum+"New"]-_root["g"+myNum+"Old"];
	_root["g"+myNum+"Change"] = _root["g"+myNum+"Diff"]/10;
	_root["b"+myNum+"Diff"] = _root["b"+myNum+"New"]-_root["b"+myNum+"Old"];
	_root["b"+myNum+"Change"] = _root["b"+myNum+"Diff"]/10;
	swatchColor = new Color(this);
	swatchColor.setRGB(_root["r"+myNum+"Change"] << 16 | _root["g"+myNum+"Change"] << 8 | _root["b"+myNum+"Change"]);
	_root["r"+myNum+"Old"] -= _root["r"+myNum+"New"]-_root["r"+myNum+"Change"];
	_root["g"+myNum+"Old"] -= _root["g"+myNum+"New"]-_root["g"+myNum+"Change"];
	_root["b"+myNum+"Old"] -= _root["b"+myNum+"New"]-_root["b"+myNum+"Change"];
}

Geht das irgendwie und wenn ja wie ?

MfG Florian
 
Hi,

das klappt prima mit MovieClips. Eine "Schaltfläche" ist im Prinzip nichts anderes als eine abgespeckte Variante eines MCs, die vielleicht für Anfänger einfacher zu handeln ist.

Einziger relevanter Unterschied: So etwas
PHP:
on(release) {
    gotoAndPlay(5);
}
spricht bei einer Schaltfläche die Zeitleiste an, in der sich der Button befindet (also z.B. die Hauptzeitleiste). Bei einem MovieClip wird hier aber die Zeitleiste dieses MovieClips angesprochen. Willst Du also mit einem Mausereignis die Navigation auf der übergeordneten Zeitleiste steuern, setze einfach ein _parent davor:
PHP:
on(release) {
    _parent.gotoAndPlay(5);
}

Gruß
.
 
Danke für deine Antwort, vielleicht habe ich ja was nicht ganz verstanden (blutiger Flashanfänger, was ist eine "Hauptzeitleiste"?) aber bei mir ändert das "parent" im Action Code des MCs leider nichts.
Code:
on(release) { 
    _parent.gotoAndPlay(5); 
}
Fehlermeldung:
Code:
Scene=Scene 1, Layer=Layer 2, Frame=1: Line 1: Mouse events are permitted 
only for button instances
     on (press) {

Für mich heißt das, daß "on (press)" ein Mausereignis ist, welches ich bei MCs nicht nutzen
kann. Das blöde Ding läßt sich einfach nicht anklicken ! :(

BTW: Ist für dich "Schaltfäche" das Gleiche wie "Button" ?

MfG Florian
 
Das sagt der Wortlaut¹ der Fehlermeldung zwar aus, aber für MovieClips gilt es nicht (es sei denn Du hast eine wirklich alte Version...).

Du hast den Code nicht auf eine Instanz, sondern versehentlich in eine Zeitleiste geschrieben, denn:
Scene=Scene 1, Layer=Layer 2, Frame=1: Line 1:
besagt, dass der Fehler im ersten Frame der zweiten Ebene in Szene 1 auftritt.

@Schaltfläche/Button: Ich verwende den Begriff "Schaltfläche" für Schaltlfächenobjekte; "Buttons" sind alles, worauf man klickt. ;) Ich weiß, das ist etwas verwirrend, aber eine andere Terminologie zur Unterscheidung bietet Flash nicht wirklich.

Generell würde ich mir angewöhnen, ausschließlich MovieClips zu verwenden, denn Schaltflächeninstanzen bieten (wenn überhaupt) kaum Vorteile, dagegen aber einige Nachteile im Handling.

Anbei ein kleines Beispiel für einen MovieClip-Button mit onClipEvent- und on()-Ereignis.

Gruß

--------------
¹ Englische Version, pfui, pfui! ^^
.
 

Anhänge

Zurück