Trucsweb.com

Forum de discussion

 Forum « Flash et Shockwave » (archives)

Re: questions precises

Envoyé: 2 février 2003, 12h40 par Oznog


Salut,

Bon, beaucoup de question et c'est loun d'être simple au début. Pour ta première question c'est oui et non, pour un événement sus une occurance tu as certes besoin d'une occurence de clip sur la scène mais il put y avoir du Actionscript sur un cadre "frame" sans occurence. Je vais procéder par le début. Ça devrait t'aider.

Une fonction AC (actionScript) très pratique; TRACE(); qui permet de faire une trace un peut comme un alert en Javascript. Le AC peut aller n'importe où. C'est le type de fonctionnalité qui indique s'il est possible ou non. Ainsi "trace" est quant à lui possible partout.

1. Premier test, place ce code sur le cadre 1 (frame 1) tout simplement :

trace('allo');

Si tu exécute, une fenêtre apparait avec écrit "allo". C'est du AS et pourtant il n'y a aucune occurence de clip sur la scène.

2. Deuxième test :

var x = 1;
trace('X = '+x);

Résultat dans la fenêtre : "x = 1"

Et puisqu'il n'y a pas de stop(); le script continura de boucler sans arrêt, tu aura donc :

x = 1
x = 1
x = 1
etc...

Alors si tu modifie ton code par celui-ci :

var x += 1; // C'est la même chose que x = x + 1;
trace('X = '+x);

tu aura donc :

x = 1
x = 2
x = 3
etc...

Mais si tu met un stop();, il n'y aura pas de boucle infinie :

var x += 0; trace('X = '+x);
stop();

tu aura donc seulement :

x = 1

3. Maintenant si tu ajoute sur la scène un champ texte. Clique l'outil "A" ou texte et ajoute une champ "texte" sur la scène mais en t'assurant de sélectionner dans les propriétés "Dynamic text". PUIS LUI DONNER LE NOM DE VARIABLE "ValeurX";

Tu peux maintenant modifier en AS ce champ texte. Si on reprend notre code.

var x += 1;
_root.ValeurX = 'X = '+x;

Résultat, au lieu d'avoir la fenêtre trace, l'affichage sera maintenant dans le chmp texte "ValeurX". Qui bouclera tant que tu n'arrête pas le Flash...

3. Maintenant cré toi un clip "movieClip" où tu dessine dessus un carré de couleur. Glisse (de la librairie) sur la scène (en plein centre) et donne lui le nom d'occurence ou "d'instance" monMC (clic sur l'occurence du clip sur la scène et dans la fenêtre propriétés tu va voir un champ pour écrire son non d'occurence).

Tu as donc une occurence du non de "monMC" de ton clip sur la scène.

Sur un cadre, ajoute ce code :
_root.monMC._x = 0;

Résultat, tu vient de modifier la position en AS de l'occurence de ton clip la plus à gauche de la scène. (Note que la position peut varié selon que tu utilise un centrage à gauche, au centre ou à droite DANS le clip).

4. Maintenant les événements. Tout les AS précédent sont des "action frame". Dans le vide sur un cadre (frame). La seule chose à respecter c'est que si tu utilise des nom d'occurence elles doivent être réellement non seulement sur la scène (à part qualeus exceptions) MAIS aussi avant ou sur le même cadre que le AS. Si ton occurence de clip est sur un cadre après le script c'est comme si elle n'existait pas encore. Résultat bogue.

Maintenant c'est différent pour les événement d'occurence de clip, les "onclipevent". Ce n'est plus des "action Frame".

TOUJOURS cliquer sur l'occurence de clip de la scène. Une fois fait, le code AS dans la fenêtre de script ne sera pas globale mais spécifique à l'occurence. Donc this=nomDoccurence.

Dans ce cas et seulement dans ce cas tu peux utiliser les "onclipevent".

POUR DIFFÉRENCIER LES DEUX, regarde bien la barre du dessus de la fenêtre d'action. Pour un "Action frame" c'Est écrit "Actions - Frame" et pour une occurence de clip "Actions - nomDoccurence".

Tu as plusieurs événements, les plus important sont :

Load - Se fait une seule fois au début quand l'occurence de clip est chargé.

EnterFrame - Ce fait à chaque cadre (frame) donc pour un flash normal c'Est 12 fois secondes tant et aussi longtemps que l'occurence se trouve sur la ligne de temps (timeline).

data - une seule fois quand des donnes "data" sont chargé. Par un load Variables par exemple.

DONC, si on refait notre test avec l'événement "enterFrame".

Tu clic sur l'occurence d'un clip sur la scène. Tu entre dans la fenêtre "Action - monMC", tu sélectionne "onClipEvent" et choisie "load" et ajoute le code de déclaration de notre varX. Puis la même chose mais en "enterFrame" cette fois :

onClipEvent (load) {
// une fois au chargement
var varX = 1;
}
onClipEvent (enterFrame) {
trace(varX);
// Exemple de ciblage :
// Même chose que trace(this.varX);
// Un x globale (actions frame) trace(_root.varX);
// Un x d'une autre occurence trace(_root.nomMc.varX);
}

Résultat un fenêtre de trace qui affiche affiche :

1
1
1
1
etc...

Si tu fait :

onClipEvent (load) {
// une fois au chargement
var varX = 1;
}
onClipEvent (enterFrame) {
varX += 1;
trace(varX);
}

Résultat :

1
2
3
4
5
...

Alors voilà, c'est en gros le principe mais pas facile à saisir. Je t'ai ajouté des exemple de ciblage. En autant que la varX existe en globale ou d'autre occurence on cette variable ça fonctionne mais c'est surtout pour la dimension "this" (objet lui-même) "_root" (scène principal ou premier nivau). Cette façon de "cibler" sont tes premiers pas en programmation orientée objet, chose asser complexe à saisir pour n'importe qui.

PETIT NOTE SUR LES ACOLADES : Dit toi que ce n'est que des parenthèse. Exactement comme en algèbre. C'est simplement pour différencier ces "Bloc de code" vs les bloc d'algèbre justement.

Il y a des acolade pour les clipEvent où le code exécuté lors de l'événement est entre les acolades :

on (...) {
}

Ou encore pour un test de condition :

// Note que la condition elle même
// est entre parenthèses, comme le type de clipEvent.
if (condition) {
// Code exécuté si la condition est OK
} else {
// Code à exécuter si la condition n'est pas respecté (else = sinon)
}

Il y a d'autre exemple comme les "for" mais toujours sur ce principe, c'est la syntaxe du langage C. Le Javascript, le PHP et d'autre langages ont cettes même "syntaxe".

Voilà, ça fait un bon tour. Amuse toi bien ;-)

Ciao
Oznog


Réponses

 sp spRe: questions precises web web2/2/2003
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

.
@