Articles taggés avec 'ce'

Un compte à rebours de classe en Javascript

Dans le poste avec la 3D à rebours FIVe3D (voir aussi comment j'ai fait: écrire un compte à rebours en Flash ), a été donnée une classe pour créer un objet en Actionscript CountDown, voici une version similaire en Javascript:

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
/ **
* Classe à rebours
*
* @ Auteur Giovambattista Fazioli
* @ @ Email g.fazioli undolog.com
* @ Web http://www.undolog.com
*
* @ Param jj (string) «jour mois, année '
*
* /
dd ) { fonction compte à rebours (jj) {
/ / Init objectif de temps
new Date ( dd ) ; var target = new Date (jj);
= target. getTime ( ) ; .. ce targetTime = cible getTime ();

/ **
* Actualiser le compte à rebours
* /
= function ( ) { cette fonction. refresh = () {
new Date ( ) ; var today = new Date ();
today. getTime ( ) ; var today = currentTime getTime ().;
/ / Temps restant
( this . targetTime - currentTime ) ; ce _leftMilliseconds = (this. targetTime - currentTime).;
Math. floor ( this ._leftMilliseconds / 1000 ) ; cet étage _leftSeconds = Math (_leftMilliseconds this. / 1000)..;
Math. floor ( this ._leftSeconds / 60 ) ; cet étage _leftMinutes Math = (_leftSeconds this. / 60)..;
Math. floor ( this ._leftMinutes / 60 ) ; .. ce _leftHours = Math étage (this. _leftMinutes / 60);
/ / Pas de module
= Math. floor ( this ._leftHours / 24 ) ; .. ce leftDays = Math étage (_leftHours this. / 24);
/ / Pour l'impression
= this ._leftMilliseconds % 1000 ; ce leftMilliseconds = Ceci _leftMilliseconds%. 1000.;
= this ._leftSeconds % 60 ; ce leftSeconds = Ceci _leftSeconds 60%..;
= this ._leftMinutes % 60 ; ce leftMinutes = ce _leftMinutes 60%..;
= this ._leftHours % 24 ; .. ce leftHours = ce _leftHours 24%;
}
( ) ; ce refresh ().;
}

Exemple

1
2
3
new countDown ( '1 1, 2009' ) ; var cd = new compte à rebours (1 '1, 2009 ');
/ / Afficher le nombre de jours, heures, minutes, secondes et millisecondes à 1 Janvier, 2009

En savoir plus ...

Ecrire bon code OO dans Adobe Flash

Voici quelques conseils sur la façon d'écrire de bons objets de code orientée objet (OO) dans Adobe Flash, en particulier pour ceux qui utilisent encore la version MX d'attente pour passer à CS3.

Organiser les dossiers des classes

Tout d'abord l'organisation des classes rend le travail de la maintenance du code extrêmement plus simple. Vous pouvez également créer une véritable bibliothèque, vous pouvez réutiliser dans d'autres projets. Flash utilise une nomenclature liée au système de fichiers, puis les organiser en dossiers seront également reflétées sur l'importation de classes. Par exemple, si nous créons la séquence de dossiers "mylibrary / graphics / complot" et d'insérer notre propre classe ActionScript "PlotClass.as" quand nous allons importer la classe que nous devrions utiliser:

1
grafica . plot . PlotClass ; d'importation. mylibrary graphiques des parcelles. PlotClass.;

Si la bibliothèque (dossier) "mylibrary" n'est pas dans votre dossier film ou d'un projet, utilisez le flash des paramètres de publication pour sélectionner le chemin:

Définition des bibliothèques percoroso

En savoir plus ...

ActionScript: cadres _parent et de contrôle

Lorsque "déclenché" un événement d'une contexte de l'objet, qui est l'objet parent qui représente la portée de toutes les variables, devient l'objet lui-même. Cette fonctionnalité, caractéristique de la programmation orientée objet, peut être désorientant erreurs qui causent et des bogues dans le code. En outre, dans certaines situations, peut empêcher l'accès à certaines variables "avant" disponibles.

Tout d'abord, nous voyons une fonctionnalité de code ActionScript lié à la gestion de contexte qui, s'il est inclus, nous permettra d'économiser quelques heures de tests inutiles. Lorsque nous avons à faire avec des graphismes ou tout simplement MovieClip imbriqués les uns dans les autres, la propriété _parent , la résolution de problèmes contexte. Par exemple, si le MovieClip padre_mc contiente figlio_mc autre MovieClip et utiliser le code suivant:

1
2
3
4
5
/ / Code à l'intérieur padre_mc
( ) { figlio_mc. onRelease = function () {
this ) ; // figlio_mc trace (this); / / figlio_mc
this . _parent ) ; // padre_mc trace (this. _parent); / / padre_mc
}

Risalisre le «père», puis, est clair et immédiat.

Avec les classes pures, le code-seulement, ou l'extension de la propriété MovieClip _parent n'est pas disponible et pourrait compliquer les choses! Immaginiiamo d'avoir une classe MyClass :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
MovieClip { Classe MyClass s'étend MovieClip {
function MaClasse () {
/ / Constructeur
}
/ /
myMethod function () {
this ) ; // myClass trace (this); / / myClass
; var num = 5;
; var cp = this;
....
[ un oggetto ] ; var monObjet = new [un objet];
( ) { monObjet. onLoad = function () {
this ) ; // myObject trace (this); / / monObjet
cp ) ; // myClass trace (cp); / / myClass
}
}

, ovvero il puntatore alla classe MyClass . Le contexte de MyMethod() est, bien sûr, this , qui est le pointeur vers la classe MyClass . . La variable num , par exemple, a un cycle de vie enfermé dans la méthode MyMethod() . Il est donc visible que dans la méthode et seront détruits à la sortie. . Même chose pour la variable myObject qui initialise cependant un événement, dans ce cas onLoad . lasciandoci, apparentemente, senza il puntatore alla classe madre myClass . Une fois déclenché onLoad() le contexte va devenir myObject laissant, apparemment, sans le pointeur de la classe parente myClass . , ha lo stesso contesto della variabile myObject ! Un examen plus approfondi du code nous voyons que la variable cp , défini dans la méthode myMethod() , a le même contexte de la variable myObject ! dell'oggetto myObject in quanto condivide con esso lo stesso contesto. En fait la variable cp (pointeur de classe) sera visible dans la méthode onLoad objet myObject car elle partage le même contexte. ha necessità di “vivere” più al lungo del previsto visto che ha “allocato” un evento (di tutto questo se ne occupa Flash a nostra “insaputa”). En fait la méthode myMethod() non seulement parce que l'objet est libérée myObject a la nécessité de «vivre» au cours de la. plus longtemps que prévu car il a "affecté" d'un événement (tout cela est affaire avec Flash à notre «inconnu»)

Conseils

Pour les événements associés à des boutons ou MovieClip une bonne habitude serait d'utiliser le formulaire:

1
2
3
4
5
my_mc onRelease = myOnRelease.;
fonction de myOnRelease () {
this ) ; // _root trace (this); / / _root
"Click me" ) ; trace ("Click me");
}

Au lieu de la plus rapide et immédiate:

1
2
3
4
( ) { my_mc. onRelease = function () {
this ) ; // my_mc trace (this); / / my_mc
"Click me" ) ; trace ("Click me");
}

L'avantage d'utiliser une fonction externe est d'avoir un cadre neutre et la possibilité d'accéder à la fonction quel que soit le MovieClip qu'il contrôle. Dans le second cas, par exemple, si je voulais forcer l'exécution du code lié à la «clic» de l'MovieClip devrais-je utiliser un code de ce type:

1
; . my_mc onRelease ();

En pratique, j'ai appeler l'événement comme s'il s'agissait d'une méthode. Cependant, je dois - en fait - pour que le MovieClip my_mc . De toute façon, cependant, je peux exécuter le code en appelant directement myOnRelease() . Évidemment, comme le montrent les exemples, les yeux à des contextes. . Dans le premier cas, le contexte de myOnRelease() est celle de la mère objet où il est écrit, par exemple _root . Dans le second cas, au lieu, le contexte est toujours le MovieClip my_mc !

Forcer un contexte différent

Nous concluons avec quelques astuces utiles dans de nombreuses circonstances. in grado di forzare un contesto di un metodo o funzione. Flash fournit une bibliothèque, mx.utils avec un objet Delegate peut forcer le contexte d'une méthode ou une fonction. Son utilisation est très simple:

1
2
3
4
5
6
7
8
utils . Delegate ; .. importation mx utils délégué;
/ /
// puntatore ad un MovieClip my_mc var, / / pointeur vers un objet MovieClip
// un bottone my_btn var, / / un bouton
myFunction function () {
this ) ; trace (this);
}
create ( my_mc , myFunction ) ; my_btn onPress = Délégué créé (my_mc, myFunction)..;

L'événement onPress my_btn les points bouton à une "nouvelle" fonction créée précisément avec le my_mc contexte. Lorsque vous cliquez sur le bouton my_btn, le code exécuté dans myFunction() aura pour my_mc contexte!

En savoir plus ...


Arrêtez SOPA