Catégorie «des tutoriels
di Flash. Illustrer une technique pour créer des composants symboles modales (MovieClip) pour être utilisés de manière similaire au Alert et Window de Flash. L'objectif est de montrer un clip ci-dessus tous les autres, la désactivation - bien - l'accès à la sous-jacent et tout autre objet / composant présent. Pour être honnête, j'ai réalisé que, ce faisant un peu de code de l'ingénierie inverse à partir d'Adobe, qui est en clair! Je n'ai vraiment résisté 
Le artefizio qui est utilisé pour désactiver toutes les interfaces présentes ci-dessous notre MovieClip, est de créer un MovieClip transparente qui prend toute la surface de la scène. a false . A ce MovieClip, qui ne sera pas assez visible, s'enclenche une méthode «vide» sur l'événement onRelease , en prenant soin de définir le useHandCursor à false .
Nous avons d'abord créer un film avec n'importe quelle interface dans la scène principale:

En savoir plus ...
En post Étendre MovieClip dans Flash MX j'ai eu une idée de prolonger d'un clip. En particulier, avait dit que l'utilisation de MovieClip.prototype ne permet pas l'extension de proprità mais seulement des méthodes suivantes:
[...] Deux limitations importantes de cette technique sont les suivantes:
- Il ne peut pas être appliquée à tous les objets exposés par Flash
- Ils peuvent être ", a ajouté" uniquement les méthodes et les propriétés ne sont pas [...]
En effet, il est possible, avec une étape supplémentaire, même ajouter dynamiquement des propriétés à l'aide MovieClip.prototype . , infatti, Flash permetteva l'aggiunta di proprietà (in lettura/scrittura o solo lettura) tramite il metodo addProperty() . Avant l'introduction de function get et function set , en fait, Flash a permis l'ajout de propriétés (lecture / écriture ou lecture seule) par l'intermédiaire du addProperty() . Dans la pratique cela se traduit par l'invocation de la méthode addProperty() et la définition des deux getters et setters. Le compositeur peut être null afin de créer propriété en lecture seule. Par exemple, si nous voulions étendre MovieClip avec un tout nouvel établissement _alpha capable d'animer, il suffit d'écrire le code suivant:
1 2 3 4 5 6 7
| : Number { fonction _get_alpha (): Nombre { this . _alpha ) ; retour (this. _alpha); } v : Number ) : Void { _set_alpha fonction (v: Nombre ): Void { this , "_alpha" , Strong . easeOut , this . _alpha , v , 1 , true ) ; nouvelle Tween (this, "_alpha", Strong easeOut, ce _alpha, v, 1, true..); } prototype . addProperty ( "_alpha_tween" , _get_alpha , _set_alpha ) ; MovieClip .. prototype addProperty ("_alpha_tween" _get_alpha, _set_alpha); |
A partir de maintenant, si nous avons un symbole "miosimbolo_mc" Nous pouvons exploiter cette nouvelle propriété:
1
| ; miosimbolo_mc _alpha_tween = 50.; |
. Ce que vous pouvez faire à la place, est d'écraser les propriétés existantes, ce qui est pourquoi j'ai utilisé _alpha_tween lieu de _alpha . Voici donc, une bonne raison de continuer à utiliser les classes de 2.0 pour étendre - et pour résultat - toute MovieClip.
En savoir plus ...
Pour revenir à la Poste classe StageExt: animations Flash redimensionnable voici un encore plus facile pour obtenir le même effet, que si la bibliothèque pour notre film est au moins un composant Flash!
Créer un symbole, un carré rouge de 100 × 100 et le placer dans les stades resizeWindow d'appel. Entrez dans la bibliothèque, pas sur la scène, un composant, comme un TextInput, et entrez le code suivant dans la première image du film.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| managers . SystemManager ; d'importation. mx gestionnaires SystemManager.; / / scaleMode = "noscale" Stade . scaleMode = "noScale" / / / / SystemManager.init (); ( "resize" , resizeWindow ) ; . SystemManager AddEventListener ("resize", resizeWindow); / / = function ( Void ) : Void { . resizeWindow redimensionner = function (Void): Void { Object = SystemManager . screen ; var s: Object . = SystemManager écran; _width = s . width ; .. ce _width = s largeur; _height = s . height ; ce _height = s la hauteur..; _x = Math . round ( s . x ) ; . ce _x = Math . ronde (S. x); _y = Math . round ( s . y ) ; . ce _y = Math . ronde (art. y); } ( ) ; resizeWindow redimensionner ().; |
Ligne 6 (SystemManager.init () ;) peut être omis.
En savoir plus ...
Lorsque estente une classe à partir d'autres objets qu'il contient un clip (MovieClip, TextField, etc ...) ils ne peuvent pas être «prêt» au sein du constructeur. Cela se produit surtout lors de l'utilisation de MovieClip plus étendus ou les composants (contrôles) de Flash. Pour résoudre le problème il suffit d'utiliser l'événement onLoad héritée de la classe elle-même. Par exemple, imaginez que vous avez un MovieClip qui contient un objet TextField (statique objet visuel à l'intérieur de flash) et un objet TextInput (inséré des composants du panneau de contrôle) et que vous voulez définir une propriété dans le constructeur de notre classe MyClass.
Nous créons un symbole et insert à l'intérieur objet soit TextField (appel let de text_txt) est l'objet TextInput (textinput_txt). Nous associons à ce symbole pour une classe qui étend MovieClip, appelez notre classe MyClass. Qu'est-ce que nous obtenons est que, pendant le constructeur de notre classe MyClass ces deux contrôles sont initialisés. Si nous essayons d'utiliser un code comme ceci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| / / controls . TextInput ; importation mx contrôles TextInput..; / / MovieClip { classe MyClass s'étend MovieClip { / / text_txt : TextField ; private var text_txt: TextField ; textinput_txt : TextInput ; private var textinput_txt: TextInput; / / function MaClasse () { "MiaClasse::costruttore" ) ; trace ("MyClass :: constructeur"); / / = "Ciao" ; . text_txt text = "Bonjour"; = "Ciao" ; . textinput_txt text = "Bonjour"; / / } } |
En savoir plus ...
Flash a toujours soutenu le plein écran (fullscreen) est en stand-alone lecteur au projecteur. Ce mode est encore entièrement pris en charge et n'a pas changé. Au lieu d'Adobe a récemment introduit la possibilité pour activer directement les films en plein écran affichés dans le navigateur. Nous avons introduit une fonction ActionScript nouvelle et simple qui fonctionne avec les deux joueurs lecteur autonome avec le navigateur. ed <embed> . Pour rendre le fuzionante plein écran doit fonctionner HTML côté, en ajoutant un nouveau paramètre allowFullScreen en TAG <object> et <embed> . Tout le reste est laissé à l'interne du moteur de Flash.
Cette nouvelle capacité est encore certaines restrictions que vous devez savoir, tout d'abord l'utilisation de la version de Flash Player 9.0.28.0 ou plus. En outre, en résumé:
- Navigateur doit être installé sur la version du Player 9.0.28.0 ou plus
- e
<embed> . Le développeur doit ajouter un nouveau paramètre allowFullScreen balise dans <object> et <embed> . Ce paramètre est normalement réglé à false et ne permet pas en plein écran. Pour activer fullscreen doit explicitement définie sur true . - Une boîte de dialogue s'affiche lorsque vous entrez en mode plein écran et vous dire comment sortir de ce mode. Cette boîte sera visible pendant quelques secondes, après quoi ils disparaîtront par lui-même.
- L'activation d'ActionScript plein écran ne peut se produire en réponse à un clic de souris ou en appuyant sur un bouton, n'importe quel mode autre sera ignorée dans ActionScript 2.0 et de déclencher une exception
throw dans ActionScript 3.0. - En mode plein écran, vous ne pouvez pas utiliser le clavier. L'utilisateur final ne peut pas entrer ou modifier du texte. La seule réponse est donnée au raccourci clavier utilisé pour quitter le mode plein écran (en appuyant sur
ESC )
ActionScript
Le code nécessaire pour définir le mode plein écran est simple et utilise l'objet Stage discuté sur ce blog en classe StageExt: animations Flash redimensionnable :
1
| "displayState" ] = "fullScreen" ; Etape ["displayState"] = "fullScreen"; |
En savoir plus ...
Comme promis voici la version mise à jour de l'effet sympathique magique de l'écriture. J'ai fait une animation différente pour la «lettre», pour montrer combien les effets que vous pouvez faire. Le source complet peut être téléchargé ici .
Classe MagicLetter
Ceci est le code de cette classe, bien sûr, peut encore être modifié et amélioré. Par exemple, vous pouvez entrer une analyse pour supprotare un symbole de "nouvelle ligne", pour l'ajustement. Peut être introduit fonctions get et set des propriétés à exporter à l'extérieur, et bien plus encore.
En savoir plus ...
Ce que je propose est un article que j'ai écrit en Août 2003 (titre original: la magie écrit dans Flash MX). En dépit d'être "daté" (maintenant, je voudrais utiliser un autre code ActionScript), à mon avis, est un bel outil pour effet un véritable enchantement. Proposer plus tard, ou vous le faites, la version mise à jour avec l'utilisation de classes ...
Dynamique MovieClip
L'élément qui joue un rôle clé nell'architetura flash MovieClip objet. La capacité à créer de tels objets à partir du code Flash offre un potentiel remarquable, ce qui en fait un environnement de développement décent vraiment amusant. Avec la possibilité d'ajouter d'exécution des objets de type de MovieClip, nous verrons comment il est facile d'obtenir l'effet de la figure 1.
Figure 1 - Exemple d'effet de texte
Le MagicText_class classe
Comme nous utilisons la version de Flash MX, nous faisons les choses à droite et créer une classe MagicText_class être réutilisé à volonté. Ce que nous faisons est de définir une nouvelle classe MagicText_class , qui hérite de toutes les caractéristiques d'un classe MovieClip. De cette façon, nous aurions un objet réel, la base de la suite créer un véritable composant Flash! Si nous voulons. Pour l'instant arrêtons-nous seulement sur notre classe et de voir comment le construire.
En savoir plus ...
J'utilise deux techniques pour étendre les fonctionnalités d'un MovieClip. Le premier, utilisé dans les versions précédentes de Flash MX, utilisés de la propriété prototype , un pointeur vers la superclasse (parent), comme indiqué dans le manuel:
Une référence à la superclasse d'un objet de classe ou fonction. La propriété prototype est automatiquement créé et associé à une classe ou un objet fonction créée. Cette propriété est statique et est spécifique à la classe ou de la fonction créée. Si, par exemple, vous créez une classe personnalisée, la valeur des propriétés prototype est partagée par toutes les instances de la classe et est accessible uniquement en tant que propriété de la classe. . Les instances de la classe personnalisée ne peut pas accéder directement à la propriétés prototype , mais peut être accessible via la propriété __proto__ .
Un des avantages de l'utilisation prototype , en particulier avec le MovieClip, réside dans l'extension de tous les MovieClip, esluso aucune. En fait, vous faire une extension de diffuser tous les MovieClip statique ou dynamique. Par exemple, une extension pratique pourrait être:
1 2 3
| prototype . move = function ( x : Number , y : Number ) { MovieClip .. prototype move = function (x: Nombre , y: Nombre ) { _x = x ; this . _y = y ; . ce _x = x;. ce _y = y; } |
En savoir plus ...
Le Fullsize technique (antichambre pour Plein écran - dont plus tard) était, jusqu'à récemment, principalement utilisé dans les applications Flash (RIA), a ensuite fait une interface utilisateur plus ou moins complexe, où le conteneur (Adobe AIR , navigateur ou votre lecteur autonome) à l'échelle par l'utilisateur, ce qui oblige à un repositionnement des objets qui composent le film. La réduction des effectifs du conteneur suit évidemment une fonction de dessin, ou Actualiser MovieClip peut repositionner ou reconcevoir l'interface d'exécution à la nouvelle taille du conteneur. Aujourd'hui, cette technique est également utilisée dans les sites Web les plus avancés, ou variée, logement extrêmement confortable rendondo interface attrayante. La mise en œuvre de cette technique est assez simple et utilise essentiellement indigènes et introduites avec l'objet Stage Flash MX version. Pour sa mise en œuvre ici est une classe qui permet d'obtenir les coordonnées de la 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
| / ** * * Les StageExt.as fichier @ * @ Auteur Giovambattista Fazioli (g.fazioli @ undolog.com) * @ Web http://www.undolog.com * @ @ Email g.fazioli undolog.com * / classe {StageExt / / Sortie __release : String = "1.0" ; privée communiqué __ var: Chaîne = "1.0"; / / Propriétés __movieWidth : Number = 0 ; privé movieWidth __ var: Nombre = 0; __movieHeight : Number = 0 ; privé movieHeight __ var: Nombre = 0; __left : Number = 0 ; privée gauche __ var: Nombre = 0; __right : Number = 0 ; privées du droit de __ var: Nombre = 0; __top : Number = 0 ; privée haut var __: Nombre = 0; __bottom : Number = 23 ; privée en bas __ var: Nombre = 23; / / w : Number , h : Number ) { StageExt fonction (w: Nombre , h: Nombre ) { "StageExt::constructor" ) ; trace (":: constructeur StageExt"); / / __movieWidth = w; __movieHeight = h; / / addListener ( this ) ; Stade . addListener (this); } / ** OnResize * () événement * / onResize ( ) { onResize fonction privée () { "StageExt::onResize " + Stage . width + ", " + Stage . height ) ; trace (":: onResize StageExt" + scène largeur + "" +. Stade hauteur.); / / Number = Math . round ( Stage . width ) ; var sw: Nombre = Math ronde (. Stade largeur.); Number = Math . round ( Stage . height ) ; var sh: Nombre = Math ronde (. Stade hauteur.); Number = Math . round ( this . __movieWidth ) ; ow var: Nombre = Math . ronde (this. __ movieWidth); Number = Math . round ( this . __movieHeight ) ; oh var: Nombre = Math . ronde (this. __ movieHeight); / / La coordonnée x (en haut à gauche) __left = - Math . floor ( ( ( sw - ow ) / 2 ) ) ; ce __ gauche = -. Math floor (((sw - oe) / 2)).; __top = - Math . floor ( ( ( sh - oh ) / 2 ) ) ; ce top = __ -. Math floor (((sh - h) / 2)).; / / La coordonnée x (en haut à droite) __right = Math . round ( ( sw + ow ) / 2 ) ; cette droite = __. Math round ((sw + ow) / 2).; / / La coordonnée y (en bas) __bottom = Math . round ( ( sh + oh ) / 2 ) ; ce __ bas =. Math round ((sh + O) / 2).; } / ** * Refresh () * / Refresh ( ) { rafraîchissement fonction publique () { onResize (); } / ** * Gauche - se * / get Left ( ) : Number { fonction publique se Gauche (): Nombre { __left ) ; retourner (__ gauche); } / ** Top * - obtenir * / get Top ( ) : Number { public function get Haut (): Nombre { __top ) ; retourner (en haut __); } / ** * Droit - get * / get Right ( ) : Number { public function get droite (): Nombre { __right ) ; retourner (__ droite); } / ** * Bas - se * / get Bottom ( ) : Number { public function get Bas (): Nombre { __bottom ) ; retourner (__ bas); } / ** * MovieWidth - get / set * / get MovieWidth ( ) : Number { public function get MovieWidth (): Nombre { __movieWidth ) ; retourner (__ movieWidth); } set MovieWidth ( v : Number ) { public function set MovieWidth (v: Nombre ) { __movieWidth = v; } / ** * MovieHeight - get / set * / get MovieHeight ( ) : Number { public function get MovieHeight (): Nombre { __movieHeight ) ; retourner (movieHeight __); } set MovieHeight ( v : Number ) { public function set MovieHeight (v: Nombre ) { __movieHeight = v; } } |
En savoir plus ...
Pour la série "How I Did It" (ou comme je l'ai fait), voici comment faire un compte à rebours pour voir dans le flash, à commencer par une date, ce jours, heures, minutes et secondes sont manquantes d'un événement! L'animation Flash ci-dessous, par exemple, voir combien de jours la première année! Ils peuvent être utilisés des menus déroulants pour sélectionner une date différente:
Nous créer trois combo day_cmb, month_cmb year_cmb et les initialiser:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| / / Combo Init controls . ComboBox ; d'importation. mx 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).; } / / I à partir d'aujourd'hui ... var i = 2007 ; i < 2020 ; i ++ ) { for (var i = 2007; i <2020; i + +) { i , i ) ; year_cmb addItem (i, i).; } / / Définit la date de Janvier 1, 2008 ; // -1 day_cmb selectedIndex = 0;. / / -1 ; // -1 month_cmb selectedIndex = 0;. / / -1 ; year_cmb selectedIndex = 1.; |
Le cœur du système, nous plaçons le cas onEnterFrame:
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 ( ) { ce onEnterFrame. = function () { / / Date = new Date ( ) ; aujourd'hui var: Date de = new Date de (); getFullYear ( ) ; var today = currentYear getFullYear ().; getTime ( ) ; var today = currentTime getTime ().; / / getTime ( ) ; . var = targetTime targetDate getTime (); / / currentTime ; var = targetTime TimeLeft - currentTime; / / . floor ( timeLeft / 1000 ) ; var c = Math étage (TimeLeft / 1000).; = Math . floor ( sec / 60 ) ; var min = Math sol (sec / 60).; . floor ( min / 60 ) ; h = var Math . étage (min / 60); . floor ( hrs / 24 ) ; var = jour Math . étage (h / 24); / / sec % 60 ) ; sec = cordes (% sec 60); length < 2 ) ? "0" + sec : sec ; sec = (sec. longueur <2) "0" + sec:? sec; / / ( min % 60 ) ; min = cordes (% min 60); min . length < 2 ) ? "0" + min : min ; = Min (min. longueur <2) "0" + min:? Min; / / hrs % 24 ) ; h = cordes (% h 24); length < 2 ) ? "0" + hrs : hrs ; ? min = (h longueur <2) "0" + h: min; / / days ) ; jours = cordes (jours); length < 2 ) ? "0" + days : days ; ? = Jours (longueur days. <2) "0" + de jours: jours; / / String = days + ":" + hrs + ":" + min + ":" + sec ; var compteur: chaîne = jours + "" + h + ":" + min + ":" + sec; / / = counter ; time_txt texte = compteur.; }; |
En savoir plus ...
Derniers Commentaires
Giovambattista Fazioli : @ Fabio: un poste dans le passé! Je recommanderais d'utiliser les fonctions les plus pratiques d'onglets maintenant ...
Fabio : Bonjour, cherchant sur le web, j'ai trouvé cet article pour créer votre bande onglet javascript avec php et css, mais ...
Miriam : Que pensez-vous de Disqus? Je l'utilise et je l'aime.
Giovambattista Fazioli : @ Nik: Je suis heureux! Bonne chance alors!
Nik : J'ai lundi l'examen des informations sur java, grâce à moi que vous avez été très utile, le livre que je n'était pas claire ...