Kategorie 'Tutorials'
di Flash. Illustrieren Sie eine Technik, Symbole zu schaffen (MovieClip) modalen Komponenten ähnlich wie die eingesetzt werden Alert und Window von Flash. Das Ziel ist es, eine MovieClip vor allen anderen zu zeigen, deaktivieren - auch - den Zugriff auf die zugrunde liegende und jedes andere Objekt / Komponente vorhanden ist. Um ehrlich zu sein habe ich erreicht, dass dadurch ein wenig "reverse engineering Code von Adobe, die in der klar ist! Ich tatsächlich widerstanden 
Die artefizio, die verwendet werden, um eine beliebige Schnittstelle Im Folgenden präsentieren wir MovieClip deaktivieren ist, ist die Schaffung eines transparenten MovieClip nehmen die gesamte Fläche der Bühne. a false . An diesem MovieClip, wird die praktisch keine sichtbaren eine Methode "void" auf das Ereignis schnappt onRelease , wobei darauf geachtet, die gesetzt useHandCursor zu false .
Zunächst erstellen wir einen Film mit einer Schnittstelle in der Hauptbühne:

Fortsetzung ...
In Post Extend MovieClip in Flash MX Ich hatte ein paar Einblicke in eine MovieClip zu verlängern. Insbesondere, sagte ich, dass die Verwendung von MovieClip.prototype nicht zulassen, dass die Erweiterung ihrer Methoden, sondern nur:
[...] Zwei wichtige Einschränkungen dieser Technik sind:
- Es kann nicht auf alle Objekte von Flash ausgesetzt angewendet werden
- Sie können "nachgeschoben" werden nur Methoden und Eigenschaften nicht [...]
In der Tat ist es möglich, mit einem zusätzlichen Schritt, auch wenn Sie dynamisch Eigenschaften hinzufügen MovieClip.prototype . , infatti, Flash permetteva l'aggiunta di proprietà (in lettura/scrittura o solo lettura) tramite il metodo addProperty() . Vor der Einführung der function get und function set , in der Tat erlaubt das Hinzufügen von Flash-Eigenschaften (read / write oder read only) über die addProperty() . In der Praxis führt dies in den Aufruf der Methode addProperty() und die Definition von zwei Getter-und Setter. Der Setter kann null , um read-only Eigenschaft zu erstellen. Zum Beispiel, wenn wir MovieClip mit einem völlig neuen Immobilie ausdehnen wollte _alpha Animation hinzugefügt werden können, schreiben Sie einfach den folgenden Code:
1 2 3 4 5 6 7
| : Number { _get_alpha function (): Anzahl { this . _alpha ) ; return (this. _alpha); } v : Number ) : Void { _set_alpha Funktion (v: Anzahl ): Void { this , "_alpha" , Strong . easeOut , this . _alpha , v , 1 , true ) ; neue Tween (this, "_alpha" Strong easeOut, diese _alpha, v, 1, true..); } prototype . addProperty ( "_alpha_tween" , _get_alpha , _set_alpha ) ; MovieClip .. Prototyp AddProperty ("_alpha_tween" _get_alpha, _set_alpha); |
Von nun an, wenn wir ein Symbol "miosimbolo_mc" haben, können wir nutzen diese neue Eigenschaft:
1
| ; miosimbolo_mc _alpha_tween = 50.; |
. Was Sie stattdessen tun, ist es, die vorhandenen Eigenschaften, weshalb ich überschreiben _alpha_tween statt _alpha . Hier ist also ein guter Grund, immer noch die 2.0-Klassen zu erweitern - und das Ergebnis - eine MovieClip.
Fortsetzung ...
Rückkehr zum Beitrag StageExt Klasse: resizable Flash-Filme ist hier ein noch einfacher zu den gleichen Effekt zu erzielen, nur dann, wenn die Bibliothek für unseren Film ist mindestens eine Flash-Komponente!
Erstellen Sie ein Symbol, ein rotes Quadrat 100 × 100 und steckte es in Etappen resizeWindow Berufung. Geben Sie in der Bibliothek, nicht auf der Bühne, eine Komponente, wie eine TextInput, und geben Sie den folgenden Code in das erste Bild des Films.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| managers . SystemManager ; . importieren mx Manager SystemManager.; / / scaleMode = "noscale" Praktika . scaleMode = "noScale" / / / / SystemManager.init (); ( "resize" , resizeWindow ) ; . SystemManager AddEventListener ("resize", resizeWindow); / / = function ( Void ) : Void { . resizeWindow resize = function (Void): Void { Object = SystemManager . screen ; var s: Object . = SystemManager Bildschirm; _width = s . width ; . diese _width = s. Breite; _height = s . height ; Diese _height = s. Höhe.; _x = Math . round ( s . x ) ; . diese _x = Math . round (s. x); _y = Math . round ( s . y ) ; . diese _y = Math . round (s. y); } ( ) ; resizeWindow resize ().; |
Die Linie 6 (SystemManager.init ();) kann weggelassen werden.
Fortsetzung ...
Wenn estent einer Klasse aus einer MovieClip, dass es andere Objekte enthält (MovieClip, TextField, etc ...) können sie nicht "bereit" innerhalb des Konstruktors. Dies geschieht vor allem, wenn Sie andere oder erweiterte MovieClip Komponenten (Kontrollen) von Flash. Zur Lösung des Problems benutzen Sie einfach das onLoad-Ereignis von der Klasse selbst übernommen. Angenommen Sie haben ein MovieClip, dass ein TextField (interne statische visuelle Objekt in Flash) und eine TextInput Objekt (eingefügt Bedienfeld Komponenten) enthält, und wollen eine Eigenschaft im Konstruktor unserer Klasse MyClass gesetzt.
Wir schaffen ein Symbol und legen Sie innerhalb der TextField-Objekt ist (nennen wir text_txt) ist das Objekt TextInput (textinput_txt). Wir verbinden mit diesem Symbol, um eine Klasse, die MovieClip erweitert, rufen Sie unsere Klasse MyClass. Was wir bekommen, ist, dass während der Konstruktor unserer Klasse MyClass diese beiden Steuerelemente initialisiert werden. Wenn wir versuchen, einen Code wie folgt zu verwenden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| / / controls . TextInput ; Import mx steuert TextInput..; / / MovieClip { class MyClass erstreckt MovieClip { / / text_txt : TextField ; private var text_txt: TextField ; textinput_txt : TextInput ; private var textinput_txt: TextInput; / / function MyClass () { "MiaClasse::costruttore" ) ; trace ("MyClass:: constructor"); / / = "Ciao" ; . text_txt text = "Hallo"; = "Ciao" ; . textinput_txt text = "Hallo"; / / } } |
Fortsetzung ...
Flash hat immer die Vollbild-(Vollbild) unterstützt und im Stand-alone-Player an den Projektor. Dieser Modus ist immer noch voll unterstützt und hat sich nicht geändert. Statt Adobe hat vor kurzem die Möglichkeit, direkt aktivieren Sie die Vollbild-Filme im Browser angezeigt eingeführt. Wir haben eine neue und einfache ActionScript-Funktion, die mit beiden Spielern Spieler mit dem Browser-Stand-alone Werke eingeführt. ed <embed> . Um den Vollbildmodus fuzionante müssen Seite HTML zu betreiben, indem Sie einen neuen Parameter allowFullScreen in TAG <object> und <embed> . Alles andere ist auf den internen Flash-Motor verlassen.
Dieses neue Feature hat noch einige Einschränkungen, die Sie wissen müssen, vor allem Nutzung des Flash Player Version 9.0.28.0 oder höher. Außerdem im Überblick:
- Browser muss auf die Version des Player 9.0.28.0 oder höher installiert sein
- e
<embed> . Der Entwickler muss einen neuen Parameter hinzuzufügen allowFullScreen Tag in <object> und <embed> . Dieser Parameter ist normalerweise auf false und erlaubt keine fullscreen. Um Vollbildmodus müssen Sie explizit festlegen, es true . - Ein Dialogfenster wird angezeigt, wenn die Eingabe Vollbildmodus werden und sagen Ihnen, wie man aus dieser Modus. Dieses Feld wird sichtbar für ein paar Sekunden, nach dem er sich von selbst verschwinden.
- Die Aktivierung der Vollbild ActionScript kann nur als Reaktion auf einen Mausklick oder das Drücken einer Taste, einem anderen Modus in ActionScript 2.0 werden ignoriert und lösen eine Ausnahme
throw in ActionScript 3.0. - Während der Vollbild-Modus können Sie nicht die Tastatur verwenden. Der Endbenutzer kann nicht betreten oder Bearbeiten von Text. Die einzige Antwort ist, die Tastenkombination verwendet werden, um den Vollbildmodus zu verlassen gegeben (durch Drücken
ESC )
ActionScript
Der Code erforderlich, um den Vollbildmodus eingestellt ist sehr einfach und nutzt das Objekt Stage in diesem Blog diskutiert StageExt Klasse: resizable Flash-Filme :
1
| "displayState" ] = "fullScreen" ; Stufe ["displayState"] = "fullScreen"; |
Fortsetzung ...
Wie hier versprochen wird die aktualisierte Version des sympathischen Wirkung geschrieben Magie. Ich habe eine andere Animation für den "Brief", um zu zeigen, wie viele Effekte, die Sie tun können. Der komplette Quelltext können Sie es hier herunterladen .
Class MagicLetter
Dies ist der Code der Klasse, natürlich kann weiter modifiziert und verbessert werden. Zum Beispiel können Sie einen parse supprot für ein Symbol der "neuen Linie" geben, um Wörter zu wickeln. Kann eine Einführung in Funktionen zu erhalten und einige Eigenschaften nach außen zu exportieren, und vieles mehr.
Fortsetzung ...
Dies schlage ich vor, ist ein Artikel, den ich im August 2003 (Originaltitel: Written Magie in Flash MX) schrieb. Trotz der "dated" (heute würde ich ein anderes ActionScript zu verwenden), ich denke, es ist ein nettes Tool, um wirklich zauberhafte Wirkung. Schlagen Sie später, oder haben Sie die aktualisierte Version mit der Verwendung von Klassen ...
Dynamische MovieClip
Das Element, das eine Schlüsselrolle nell'architetura Flash-MovieClip-Objekt spielt. Die Fähigkeit, Objekte dieser Art von Code zu erstellen gibt ein bemerkenswertes Potenzial, Flash, so dass es eine anständige Entwicklungsumgebung wirklich Spaß. Mit der Möglichkeit, zur Laufzeit Objekte vom Typ MovieClip hinzufügen, werden wir sehen, wie einfach es ist, die Wirkung in Abbildung 1 dargestellt zu erreichen ist.
Abbildung 1 - Beispiel für Text-Effekt
Die Klasse MagicText_class
Da wir mit der neuesten Version von Flash MX sind, machen wir die Dinge richtig und erstellen Sie eine Klasse MagicText_class beliebig wiederverwendet werden. Was wir tun, ist die Definition einer neuen Klasse MagicText_class , die alle Merkmale einer Klasse MovieClip erbt. Auf diese Weise haben wir ein reales Objekt hätte, dann schaffen die Grundlage für eine Flash-Komponente real! Wenn wir wollen. Für den Moment wollen wir nur auf unsere Klasse zu wohnen und zu sehen, wie sie zu bauen.
Fortsetzung ...
Ich benutze zwei Techniken, um die Funktionalität eines MovieClip zu verlängern. Die erste, in früheren Versionen von Flash MX, gebraucht Eigentum prototype , ein Zeiger auf die Oberklasse (Eltern), wie im Handbuch angegeben:
Ein Verweis auf die Oberklasse einer Klasse oder eines Funktionsobjekts. Das Anwesen prototype wird automatisch erstellt und die damit verbundenen jede Klasse oder Funktion Objekt erstellt. Diese Eigenschaft ist statisch und ist spezifisch für die Klasse oder Funktion erstellt. Wenn zum Beispiel erstellen Sie eine benutzerdefinierte Klasse, den Wert der Immobilie prototype wird von allen Instanzen der Klasse geteilt und ist nur als eine Eigenschaft der Klasse. . Instanzen der benutzerdefinierten Klasse kann nicht direkt auf die Eigenschaft zugreifen prototype , kann aber durch die Eigenschaft zugegriffen werden __proto__ .
Einer der Vorteile der Verwendung prototype , insbesondere mit dem MovieClip MovieClip befindet sich in der Verlängerung aller, markiert keine. In der Tat, machen Sie eine Erweiterung, um alle MovieClip Broadcast statisch oder dynamisch. Zum Beispiel könnte eine praktische Erweiterung werden:
1 2 3
| prototype . move = function ( x : Number , y : Number ) { MovieClip .. Prototyp move = function (x: Anzahl , y: Anzahl ) { _x = x ; this . _y = y ; . diese _x = x;. dies _y = y; } |
Fortsetzung ...
Die Technik Fullsize (Halle für Vollbild - davon später mehr) war bis vor kurzem hauptsächlich in Flash-Anwendungen (RIAs) eingesetzt, die aus so einer mehr oder weniger komplexe Benutzeroberfläche, wo der Container (Adobe AIR , Browser oder Standalone-Player) durch den Anwender skaliert, zwingt eine Neupositionierung der Objekte, aus denen der Film. Die Verkleinerung des Containers offensichtlich folgt eine Zeichnung Funktion oder Refresh MovieClip kann positionieren oder Neugestaltung der Laufzeit-Schnittstelle auf die neue Größe des Behälters. Heute wird diese Technik auch in fortgeschrittenen Websites oder artikuliert, sehr fromm rendondo attraktive Schnittstelle verwendet. Die Umsetzung dieser Technik ist sehr einfach und nutzt im Wesentlichen die native Flash-Stage-Objekt und stellte mit der Version MX. Für ihre Umsetzung ist hier eine Klasse, die die Koordinaten des zu erhalten ermöglicht Stage :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| / ** * * @ File StageExt.as * @ Autor Giovambattista Fazioli (@ g.fazioli undolog.com) * @ Web http://www.undolog.com * @ @ Email g.fazioli undolog.com * / {Class StageExt / / Release __release : String = "1.0" ; __release private var: String = "1,0"; / / Eigenschaften __movieWidth : Number = 0 ; __movieWidth private var: Anzahl = 0; __movieHeight : Number = 0 ; __movieHeight private var: Anzahl = 0; __left : Number = 0 ; __left private var: Anzahl = 0; __right : Number = 0 ; __right private var: Anzahl = 0; __top : Number = 0 ; __top private var: Anzahl = 0; __bottom : Number = 23 ; __bottom private var: Anzahl = 23; / / w : Number , h : Number ) { StageExt Funktion (w: Anzahl , h: Anzahl ) { "StageExt::constructor" ) ; trace ("StageExt:: constructor"); / / __movieWidth = w; __movieHeight = h; / / addListener ( this ) ; Praktika addListener (this).; } / ** * OnResize ()-Ereignis * / onResize ( ) { onResize private function () { "StageExt::onResize " + Stage . width + ", " + Stage . height ) ; trace ("StageExt: onResize" + Bühne . width + "" + Bühne . height); / / Number = Math . round ( Stage . width ) ; var sw: Anzahl = Math round (. Stufe Breite.); Number = Math . round ( Stage . height ) ; var sh: Anzahl = Math round (. Stufe Höhe.); Number = Math . round ( this . __movieWidth ) ; var ow: Anzahl = Math . round (this. __movieWidth); Number = Math . round ( this . __movieHeight ) ; Oh var: Anzahl = Math round (this. __movieHeight);. / / Die x-Koordinate (oben links) __left = - Math . floor ( ( ( sw - ow ) / 2 ) ) ; . diese __left = - Math . Etage (((sw - ow) / 2)); __top = - Math . floor ( ( ( sh - oh ) / 2 ) ) ; . diese __top = - Math . Etage (((sh - h) / 2)); / / Die x-Koordinate (oben rechts) __right = Math . round ( ( sw + ow ) / 2 ) ; . diese __right = Math . round ((sw + ow) / 2); / / Die y-Koordinate (unten) __bottom = Math . round ( ( sh + oh ) / 2 ) ; . diese __bottom = Math . round ((sh + O) / 2); } / ** * Refresh () * / Refresh ( ) { public function refresh () { onResize (); } / ** * Links - get * / get Left ( ) : Number { public function get Left (): Anzahl { __left ) ; return (__left); } / ** * Top - get * / get Top ( ) : Number { public function get Top (): Anzahl { __top ) ; return (__top); } / ** * Rechts - get * / get Right ( ) : Number { public function get Right (): Anzahl { __right ) ; return (__right); } / ** * Bottom - get * / get Bottom ( ) : Number { public function get Bottom (): Anzahl { __bottom ) ; return (__bottom); } / ** * MovieWidth - get / set * / get MovieWidth ( ) : Number { MovieWidth public function get (): Anzahl { __movieWidth ) ; return (__movieWidth); } set MovieWidth ( v : Number ) { MovieWidth public function set (v: Anzahl ) { __movieWidth = v; } / ** * MovieHeight - get / set * / get MovieHeight ( ) : Number { MovieHeight public function get (): Anzahl { __movieHeight ) ; return (__movieHeight); } set MovieHeight ( v : Number ) { MovieHeight public function set (v: Anzahl ) { __movieHeight = v; } } |
Fortsetzung ...
Für die Serie "How I Did It" (oder so wie ich) hier ist, wie man einen Countdown machen, um Flash-Display, beginnend mit einem Datum werden, was Tage, Stunden, Minuten und Sekunden fehlen ein Ereignis! Der Flash-Film unter, zum Beispiel sehen, wie viele Tage das erste Jahr! Sie können verwendet werden Pull-Down-Menüs auf ein anderes Datum zu wählen:
Wir schaffen drei Kombinationsfelder day_cmb, month_cmb year_cmb und initialisieren Sie sie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| / / Init-Combo controls . ComboBox ; . importieren mx steuert ComboBox.; / / var i = 1 ; i < 32 ; i ++ ) { for (var i = 1, i <32; i + +) { i , i ) ; . day_cmb addItem (i, i); } var i = 0 ; i < 12 ; i ++ ) { for (var i = 0; i <12; i + +) { sm [ i ] , i ) ; month_cmb addItem (sm [i], i).; } / / Ab heute ... Ich var i = 2007 ; i < 2020 ; i ++ ) { for (var i = 2007; i <2020; i + +) { i , i ) ; . year_cmb addItem (i, i); } / / Setze das Datum auf den 1. Januar 2008 ; // -1 day_cmb selectedIndex = 0;. / / -1 ; // -1 month_cmb selectedIndex = 0;. / / -1 ; year_cmb selectedIndex = 1.; |
Das Herz des Systems stellen wir die onEnterFrame Event:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| onEnterFrame = function ( ) { diesem. onEnterFrame = function () { / / Date = new Date ( ) ; var heute: Date = new Date (); getFullYear ( ) ; var today = currenty getFullYear ().; getTime ( ) ; var today = currentTime getTime ().; / / getTime ( ) ; . targetTime var = TARGETDIR getTime (); / / currentTime ; var = targetTime TimeLeft - currentTime; / / . floor ( timeLeft / 1000 ) ; var s = Math . floor (TimeLeft / 1000); = Math . floor ( sec / 60 ) ; var min = Math floor (sec / 60).; . floor ( min / 60 ) ; var Stunden = Math . floor (min / 60); . floor ( hrs / 24 ) ; var days = Math . floor (Std. / 24); / / sec % 60 ) ; sec = String (s% 60); length < 2 ) ? "0" + sec : sec ; sec = (sec. Länge <2) "0" + sec: sec; / / ( min % 60 ) ; min = String (min% 60); min . length < 2 ) ? "0" + min : min ; = Min (min. Länge <2) "0" + min: min; / / hrs % 24 ) ; Std. = String (hrs% 24); length < 2 ) ? "0" + hrs : hrs ; ? Min. = (Std. Länge <2) "0" + Std: Min; / / days ) ; Tage = String (Tage); length < 2 ) ? "0" + days : days ; ? = Tage (days. Länge <2) "0" + Tage: Tage; / / String = days + ":" + hrs + ":" + min + ":" + sec ; var counter: String = Tage + "" + Stunden + ":" + min + ":" + s; / / = counter ; time_txt text = Zähler.; }; |
Fortsetzung ...
Neueste Kommentare
Simon : Es ärgert gestört wieder ein und verwenden, die Platz für diese Dinge ... aber es funktioniert nicht ...
Giovambattista Fazioli : @ Simon: Was könnte darauf zurückzuführen sein, die Syntax, die ich verwendet, die speziell für PHP 5 +,...
Simon : Ich habe versucht gestern Abend, alles in functions.php, okay, jquery Formulare und Tabs jQueryUI ihnen ...
Giovambattista Fazioli : @ Simon: Ich empfehle Reinigung zu einem Code wie in ein ...
Simon : @ Giovambattista Fazioli: Vielen Dank für Ihre Geduld, es ist alles klar ... jetzt fühle ich mich jetzt ...