Trucsweb.com

Forum de discussion

 Forum « Flash et Shockwave » (archives)

Flash et le concept OBJET: Retour sur les bases!

Envoyé: 25 janvier 2006, 10h21 par toph


salut ...

héhé ... ça me rappelle quand j'ai commencé! je comprennais rien non plus! ...

Je vais donc revenir sur les bases du langage actionscript et essayer d'expliquer clairement les choses et le fonctionnement.
Je ne dis pas que c'est ça qui t'arrive, mais en tout cas ça ressemble à un problème de ciblage!

Alors, pour bien commencer Flash, il faut savoir quelques petits points importants :

#1 : FLASH = simili de programmation objet : ###############################

Chaque clip que tu pose sur ta scène est considérée comme un objet. et un objet est défini par des fonctions associées et des propriétés. Par exemple, pour un clip de base : il peut contenir les fonctions 'play()', 'stop()', etc ... et les propriétés '_alpha', '_x', '_y' etc... Les premières sont des actions potentielles liées à cet objet et les deuxièmes sont des caractéristiques de cet objet (sa place, son mode affichage, son nom ...).
En ActionScript (AS), tout comme n'importe quel langage objet, pour qu'une fonction ou une propriété relative à un objet (on dit 'à la classe de l'objet : ici, la classe MovieClip) soit utilisée, il faut cibler cet objet :

mon_objet.ma_fonction(mes_arguments);
ou
mon_objet.ma_propriété = un_valeur;

#2 Le ciblage : ###########################################################

Dans le cas où un clip est encastré dans d'autres clips (à la racine : un clip 1 dans un clip2 dans un clip 3), le ciblage se fait par succession :
si tu es dans clip3, tu atteins le clip1 comme ça : this.clip2.clip1 ou clip2.clip1
si tu es dans clip2, tu atteins le clip1 comme ça : this.clip1 ou clip1
Si tu es à la racine, tu atteins le clip 1 comme ça : this.clip3.clip2.clip1, ou clip3.clip2.clip1.

A tout moment et de n'importe où, tu peux appeler le clip1 en faisant _root.clip3.clip2.clip1. Et donc, pour utiliser les fonctions associées (la fonction play par exemple) à clip1 de puis clip3 par exemple ... il faut faire :
this.clip2.clip1.play() ou clip2.clip1.play() ...

Pour remonter en arrière :
si tu es dans clip1, tu atteins le clip2 comme ça : this._parent.clip2 ou _parent.clip1

Maintenant imagine un clip2bis situé dans clip 3 également. Pour acceder à clip1 depuis clip2bis, tu fais :
this._parent.clip2.clip1 ou _parent.clip2.clip1
la propriété _parent te permet de redescendre d'un cran dans la hiérachie des clips, d'appeler le clip parent, ici de remonter à clip3, pour aller ensuite dans clip2 puis dans clip1...

Une fois qu'on a assimilé ça, on a tout compris à Flash!

#2bis : comment vérifier un ciblage? #######################################
la bonne vieille commande
trace(this); où es le this (c'est à dire l'objet dans lequel tu es)
C'est bien utile et ça marche très bien.
Pareil, tu peux tester un ciblage complet :
exemple : trace(this.clip2.clip1 ...);

#3 : les gestionnaires d'événement #######################################

Chaque objet, en plus de propriétés et de fonctions associées, possède un gestionnaire d'événement. Les boutons, qui sont un type particulier de clip possède ce gestionnaire qui permet à de savoir à une frame donnée si ton bouton est enclanché, survolé, relaché etc...
Dans les versions antérieures de Flash, on utilisait effectivement les gestions d'event telle que on(Release) ... mais cela impliquait d'écrire cette 'action' dans le gestionnaire d'événement du bouton et non dans la case action de la frame.
Case action de la frame : c'est le panneau action en faisant attention d'avoir préalablement cliqué sur la frame correspondant dans le scénario.
gestionnaire d'événement : panneau action également, mais en faisant attention cette fois de sélectionné sur la scène l'objet en question (le bouton, le clip ...).
Il y avait souvent confusion dans ces choses là!
Les nouvelles méthodes apportées par les versions MX ont permis de mettre de côté l'utilisation de ce gestionnaire et de passer uniquement par les actions de frame. Le seul inconvénient est qu'il faut donner un nom à ton bouton de manière à pouvoir le cibler! c'est la qu'apparait le nom d'occurence (en bas à gauche de l'interface flash)

C'est bien simple :

tu glisses ton bouton sur la scène, tu lui donne un nom d'occurence (toto par exemple) ensuite, en faisant bien attention de sélection ta frame dans le scénario, tu écris dans le panneau action :

toto.onRelease = function(){
getURL("partenaire.swf", "_blank");
}

et là, ça devrait marcher!

pareil pour le rollOver

toto.onRollOver = function(){
clip1.play(); // par exemple
}

Dans le deuxième cas, il faut biensûr que tu aies donné au clip que tu veux jouer le nom d'occurence 'mon_clip' par exemple... et qu'il soit au même niveau que toto. sinon, tu dois utiliser les méthode ciblage décrites précédement.

D'autre part, il y a un autre point important à savoir : comme je l'ai dit, les boutons sont des clips 'pré-programmé'. N'importe qui, et tu verras que c'est souvent plus simple, peut créer un bouton de toute pièce à partir d'un clip (car le clip possède également les fonction de gestion d'event onRelease, onRollOver, etc...). Et ceci pour une raison simple : tu ne peux pas utiliser le nom d'un bouton dans ton ciblage:
imagine un clip1 à l'intérieur d'un bouton btn1, à l'intieur d'un clip2. Et bien les accès suivants :
clip2.btn1 fonctionne si tu es à la racine
btn1 fonctionne si tu es dans clip2
mais btn1.clip1 ne fonctionnera pas. Tu ne peux pas manipuler un clip à l'intérieur d'un bouton en ActionScript (c'est assez con, mais le jour où tu t'apperçois de ça, tu es content d'avoir trouvé pourquoi ta p.t..n d'anim ne marche pas!!!)

Voilà, voilà ...

Donc, pour résumer :
vérifie ton ciblage, vérifie tes nom d'occurence, fais gaffe au bouton (pas de clip à l'intérieur) et normalement, ça devrait marcher!

Et n'hésite pas à revenir (mais en précisant comment est construite ton anim)
A plus
Toph'


Réponses

 sp spload, play, remove un clip interne à une animation yoda26/1/2006
 sp spRe: load, play, remove un clip interne à une animation toph26/1/2006
 sp spRe: load, play, remove un clip interne à une animation yoda6/2/2006
 sp spRe: Flash et le concept OBJET: Retour sur les bases! petites corrections toph25/1/2006
Aucun médias sociaux
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@