Komponente Flash 8 |
|
Ein Tipp von: | http://www.pastorpixel.de |
Action | |
function meineFunktion () { _root.ausgabe="ich habe den Button geklickt!"; } meinButton.addEventListener ("click",meineFunktion); |
|
In Flash 8 gibt es den changeHandler der Komponenten nicht mehr. Stattdessen werden EventListener eingesetzt. Hier wurde dem Button der Instanzname "meinButton" zugewiesen. Im ersten Bild wurde eine Funktion namens "meineFunktion" erstellt. Um einen Listener mit einem Broadcaster zu registrieren, rufen Sie die Methode addEventListener() vom Broadcaster auf. Verwende folgende Syntax: meinButton.removeEventListener ("click", meineFunktion); Auf der vorigen Seite wurde eine Funktion als Listener verwendet. Der Listener kann auch ein Objekt sein. Zum Verwenden eines Listener-Objekts gibt es drei Möglichkeiten: 1) das aktuelle Objekt mit dem Schlüsselwort this als Listener angeben (diese Seite) evtObj:Object ist ein Objekt, das automatisch erstellt wird, wenn ein Ereignis ausgelöst und an die Rückruffunktion übergeben wird. Hiermit kann man Informationen über den Ereignistyp abrufen sowie über die Instanz, die das Ereignis per Broadcast gesendet hat. function click () {
|
|
existingObject.eventName = function(evtObj:Object){ // Auszuführnde Anweisungen/ Actions }; componentInstance.addEventListener("eventName", listenerObject); |
ein vorhandenes Objekt nutzen |
quadrat_mc.click = function(){ this._alpha=50; }; meinbutbut.addEventListener ("click",quadrat_mc); |
|
Unterschiede der Listener in Komponenten und der "normalen" Listener Bei der Verwendung von Komponenten nutzen Sie eine etwas andere Syntax für Ereignis-Listener. Der Hauptunterschied besteht darin, dass Sie die Methode addEventListener() verwenden müssen anstatt addListener() Außerdem müssen Sie nicht nur das Ereignis angeben, das überwacht werden soll, sondern auch das Objekt oder die Funktion für den Ereignis-Listener. |
|
ein neues Listener Objekt erstellen | |
var listenerObject:Object = new Object(); listenerObject.eventName = function(evtObj:Object){ // Auszuführnde Anweisungen/ Actions }; componentInstance.addEventListener("eventName", listenerObject); |
Dieser ActionScript-Code definiert das Listener-Objekt loaderListener, das zwei Ereignisse überwacht: progress und complete. Progress wird im Gegensatz zu complete eventuell öfter ausgelöst. Das Beispiel wird in den livedocs von Adobe ausführlich erklärt. http://livedocs.adobe.com/flash/8_de/ |
var loaderListener:Object = new Object (); loaderListener.progress = function (evt_obj:Object):Void { anzeige =evt_obj.target.bytesLoaded + " of " + evt_obj.target.bytesTotal + " bytes loaded"; }; loaderListener.complete = function (evt_obj:Object):Void { anzeige += "\n" + evt_obj.type; }; my_ldr.addEventListener ("progress", loaderListener); my_ldr.addEventListener ("complete", loaderListener); my_ldr.load ("logo.jpg"); |
|
Bestellformular |
|
Actionscript | PHP Code |
function clicked () { var lv = new LoadVars (); lv.prediger = prediger.value; lv.datum = datum.text; lv.anzahl = anzahl.value; lv.themabb = ""; for (i = 0; i < thema.selectedIndices.length; i++) { lv.themabb += thema.getItemAt (thema.selectedIndices[i]).label + ", "; } lv.bemerkung = bemerkung.text; lv.sendAndLoad ("form.php",lv,"POST"); } button.addEventListener ("click",clicked); |
<? $empfaenger = "deine@EmailAdresse.de"; $betreff = "Neue Predigt Bestellung"; $from = "From: Bestellungs Center <mail@pastorpixel.de>"; $txt = "Prediger: ".utf8_decode($_POST['prediger'])."\n"; $txt .= "am: ".utf8_decode($_POST['datum'])."\n"; $txt .= "Dauer ".utf8_decode($_POST['anzahl'])." Minuten \n"; $txt .= "Thema: ".utf8_decode($_POST['themabb'])."\n"; $txt .= "Anmerkung: ".utf8_decode($_POST['bemerkung']); mail($empfaenger, $betreff, $txt, $from); ?> |
Das Ereignisobjekt |
|
var myButton:mx.controls.Button; var myText:mx.controls.TextInput; function click (evt) { myText.text =(evt.target); } myButton.addEventListener ("click",this); |
Die Eigenschaft target des Ereignisobjekts ist ein Verweis auf die Instanz, die das Ereignis überträgt. Dieser Code zeigt den Wert der Eigenschaft target in der TextInput-Komponente an. |
function ereignisPruefen (evt) { if (evt.type == "click") { anzeige = "Der Button wurde geklickt."; } else if (evt.type == "change") { anzeige = "Eintrag im Textfeld"; } } meinButton.addEventListener ("click", ereignisPruefen); meinText.addEventListener ("change", ereignisPruefen); |
Mit der Eigenschaft type des Ereignisobjekts wird ein String mit dem Namen des Ereignisses übertragen. Hier wird auf "click" oder "change" geprüft und eine entsprechende Anweisung ausgeführt. Wenn ein Ereignis über zusätzliche Eigenschaften verfügt, werden sie im Eintrag des Ereignisses in der Komponentenreferenz aufgelistet. |
Gültigkeitsbereiche |
|
function esFunzt () { this.scaleY=200; } box_mc.click=function(){ this._yscale=200; } derButton.addEventListener ("click",box_mc); derButton.addEventListener("click",esFunzt); |
Auf der ersten und zweiten Seite haben wir gelernt, dass man Funktionen oder Objekte beim Broadcaster registrieren kann. Verwendet man das Schlüsselwort this, so bezieht es sich in Funktionen auf die Komponenteninstanz die den Broadcaster sendet, während es sich beim Listener Objekt auf den Listener bezieht. |
Wenn man dagegen eine Funktion an addEventListener() übergibt, wird die Funktion im Gültigkeitsbereich der Komponenteninstanz aufgerufen, die addEventListener() aufruft. Man kann auch die Ereignisprozdur on() verwenden. Man wählt die Komponenteninstanz auf der Bühne aus und vergibt im Aktionenbedienfeld die Aktion. |
|
Akkordeon Komponente |
|
In den Livedocs von Adobe gibt es ein Tutorial, wo es noch genauer erklärt wird und noch mehr Raffinessen verwendet wurden. Die hier benutzte Scrollleiste im vierten Feld ist die "UIScrollBar", die genauso wie in Flash MX eingesetzt wird. Nehmen wir an, wir hätten in m1_mc eine Variable, namens meineVar. Über folgenden Pfad könnte man dann von hier aus darauf zugreifen: child1.meineVar |
|
Die ScrollPane Komponente. |
|
on (release) { |
In die ScrollPane Komponente wird ein verknüpfter Movieclip eingefügt. Sind die Abmessungen des MCs größer entstehen Scrollleisten. |
Stile der Komponenten style | |
_global.style.setStyle("color", 0xCC6699); _global.style.setStyle("themeColor", "haloBlue") _global.style.setStyle("fontSize",12); myButton.setStyle("color", 0x000099); myButton.setStyle("fontFamily", "_serif"); myButton.setStyle("themeColor", "haloOrange"); |
Es gibt mehrere Möglichkeiten die Aussehen der Komponenten zu verändern. Einmal über Stile, die sich global, für einzelnen Instanzen oder auch für Gruppen festlegen lassen. Außerdem gibt es das Skinning und die Themen. Themen sind fla Dateien in denen Aussehen und Verhalten der Komponenten gespeichert sind. C:\Programme\Macromedia\Flash 8\de\Configuration\ComponentFLA Einiges lässt sich über Stile änderen, anderes nur über Skinning. |