Duplication, utilisation des variables, controle d'un movieclip et startdrag

Soyez le premier à donner votre avis sur cette source.

Vue 9 500 fois - Téléchargée 1 408 fois

Description

Cette source peut servir à tous ceux qui se pose des questions :
- Sur la duplication de movie
- Sur l'utilisation des variables
- Sur l'utilisation du drag

Cette source reste d'un niveau assez déplorable compte tenu de son optimisation et de mon niveau générale en Flash.
Si quelqu'un peut m'aider à la rendre meilleur je lui en serais extrêmement reconnaissant.

Conclusion :


stop();

//on commence déjà avec un petit exercice de style sur la duplication du Movie.
//on prend le petit carré en haut à gauche, et on le duplique
control_haut_btn.duplicateMovieClip("control_droite_btn", this.getNextHighestDepth());
//A noter que this.getNextHighestDepth() est assez pratique pour ne pas
//se prendre la tête avec la profondeur

//on assigne au nouveau movie les coordonnées de son précédent et on y ajoute
//la largeur et la hauteur de son précédent.
control_droite_btn._x = control_haut_btn._x+control_haut_btn._width;
control_droite_btn._y = control_haut_btn._y+control_haut_btn._height;
//on le fait tourner de manière à avoir la flèche du bon coté
control_droite_btn._rotation = 90;

//on refait la même chose pour le bouton qui va s'afficher en bas
control_haut_btn.duplicateMovieClip("control_bas_btn", this.getNextHighestDepth());
control_bas_btn._x = control_droite_btn._x-control_droite_btn._width;
control_bas_btn._y = control_droite_btn._y+control_droite_btn._height;
control_bas_btn._rotation = 180;

//et encore la même chose pour le bouton de gauche
control_haut_btn.duplicateMovieClip("control_gauche_btn", this.getNextHighestDepth());
control_gauche_btn._x = control_haut_btn._x-control_haut_btn._width;
control_gauche_btn._y = control_haut_btn._y+control_haut_btn._height;
control_gauche_btn._rotation = 270;

//le gros avantage du code précédent vient du fait que maintenant il n'y a plus
//qu'un seul bouton à modifier (place mais aussi forme, etc.) pour modifer
//l'intégralité du controleur (les quatres flèches en tout)

//on créé nos variables. But : avoir un flash dynamique avec tout plein
//d'interractions possibles.

//la variable rate correspond à l'intensité du déplacement
//la variable input correspond à ce qui s'affiche dans l'écran de gauche
var rate = 5;
input = rate;

//la variable rate2 correspond au nombre qui va s'ajouter à l'écran de gauche
//la variable input2 correspond à ce qui s'affiche dans l'écran de droite
var rate2 = 1;
input2 = rate2;

//maintenant on assigne à chaque bouton l'action qu'il doit avoir sur la forme
//du bas
droite_btn.onPress = function() {
input += rate2;
rate = input;
};
//ici lorsque l'on clique sur le bouton droite_btn, on met à jour la variable de input
//selon la manière suivante : input = input + rate2
//enfin on met à jour la variable rate qui servira pour le
//déplacement de l'objet du bas

gauche_btn.onPress = function() {
input -= rate2;
rate = input;
};
droite2_btn.onPress = function() {
input2 += 1;
rate2 = input2;
};
gauche2_btn.onPress = function() {
input2 -= 1;
rate2 = input2;
};

//voilà enfin les paramètres du controler qui vont faire bouger l'objet du bas
//Notez l'utilisation de la variable rate.
control_haut_btn.onRelease = function() {
bouton_btn._y -= rate;
};
control_droite_btn.onRelease = function() {
bouton_btn._x += rate;
};
control_bas_btn.onRelease = function() {
bouton_btn._y += rate;
};
control_gauche_btn.onRelease = function() {
bouton_btn._x -= rate;
};

//Pour le fun on met un startDrag, histoire de montrer au passage comment ça marche

//Note : j'ai délimité la zone de drag au carré, n'ayant pas réussi à le faire
//pour le reste... erf. je ne suis qu'un novice.
bouton_btn.onPress = function() {
startDrag(_root.bouton_btn, false, 81.6, 130.6, 466.8, 339.4);
};
bouton_btn.onRelease = function() {
stopDrag();
};

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
24 novembre 2005

Une remarque au passage sur le typage strict de l'ActionScript2 : je ne connais pas C#, mais je programme pas mal en PHP, et ça m's fait tout drole au début. En effet, le PHP n'est pas du tout typé, les variables sont déclarées lors de leur première apparition et elles sont du type de ce que l'on met dedans.
Messages postés
232
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
29 mars 2011

Lol, évidemment, mais comem toutes nouvelle nomenclature, fonctionnent avec l'anciennce, mais c'est quand même mieux d'utilsier la nouvelle.

Désolé pour le var rate2:Number, mais je commence à en voir partout, et en cherchant sur le site de Macromedia, je suis tombé sur une phrase disant que ça faisait partie de la nouvelle écriture du code. Le code qui se rapproche de plus en plus du C#. Etant donné que le Flash s'étend de plus en plus (comme ça, ça accèlere encore plus l'expansion, et les gens codant en C# ne sont pas dépayser). Ca permet entre autre, de voir des jeux/appli Flash sur PSP :).

Et puis, je trouve ça quand même beaucoup plus rigoureux de définir la variable AINSI que son type. Même si je fais partie de ceux qui ont tendance à transformer une chaine en nombre puis en boolean puis en Tableau sans trop me poser de question.
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
9
je tiens à préciser que :
"var rate2:Number = 1;" c'est de l'AS2
et que :
"var rate2 = 1;" c'est de l'AS1
Dans les deux cas, la syntaxe est bonne et la variable fonctionnera... tout dépends de tes envies. Et c'est une des "nouveautés" merdiques qu'à apporté MX2004, pour "ne pas destabiliser les programmeux qui connaissent rien à flash et font du C# ou PHP"...

Peg'
Messages postés
396
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 novembre 2009

Effectivement tous bien refflehis je suis d'accord avec toi Slagt !!!
Un novis est une personne sachant maitrise l'AS1.

Mais je croi que bientôt après "Expert" nous arons les "Maitre" avec l'AS3 qui devrai sortir !!!

C'est assez pitoyable comme remarque mais bon c'est une réalité tous de même.

@+
Bon code
Flo
Messages postés
232
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
29 mars 2011

Euh... novice ? Désolé, mais pour moi un novice c'est entre débutant et expert. Ton code est plus adapté aux débutants qu'aux novices. Je me considère comme novice car je maîtrise l'AS1 mais pas l'AS2. Un débutant est quelqu'un qui ne maîtrise ni l'un ni l'autre, et un expert, les deux !

Désolé pour cette remarques proche du chipotage :)

Pour ta source, c'est en effet intéressant de mettre du neuf de temps en temps (les vieilles sources étant souvent codé en Flash 5 ou Flash 6). Ca apporte la nouvelle nomenclature :)

A part que maintenant, on écrit ceci : "var rate2:Number 1;" et non "var rate2 1;"
De plus, on ne se sert plus du _root du tout, car il pose trop de problème. Dans ce cas on utilise plutot des "this", ou même, parfois, j'ai eut à faire à des this._parent._parent._parent._parent. Dans ce cas, le mieux est de déclaré une varibale :
var cd:MovieClip = this._parent._parent._parent._parent;

En éspérant que ça t'aidera à améliorer ta source (même si ce ne sont que des remarques sur la nomenclature plus que sur le contenu du code).
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.