cs_darkthief
Messages postés23Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 6 décembre 2007
-
23 avril 2007 à 16:44
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 2008
-
25 avril 2007 à 14:21
Bonjour,
je débute dans le flash et action script et j'ai un petit soucis (surement 3 fois rien mais je trouve pas :P)
je crée un nouveau document flash,
je crée un clip que je place dans mon document.
et je lui met ce script :
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 20081 24 avril 2007 à 19:57
Salut,
Oki docky
Alors, la raison pour laquelle lorsque tu mets le nom du clip ça ne marche pas est simple.
Quand tu utilies les événements on() ou onClipEvent(), tu es déjà dans ton clip . Donc dés que tu écriras le nom d'un clip, il le cherchera dans celui ci.
Pour être plus explicite, un exemple expliquera mieux qu'une brique de texte (le ciment coutant cher de nos jours :P) :
Fais deux clips de type bouton dans une nouvelle scène.
Sur le premier clip (que j'appelerai bouton1), tu mets ce code :
on(release){ trace("this " + this + " :: chemin vers le bouton ? " + bouton1);
}
Avec le second bouton (bouton2), mets dans le calque :
bouton2.onRelease = function(){
trace("this " + this + " :: chemin vers le bouton ? " + bouton2);
}
Le premier code te renverra : this bouton1 :: chemin vers le bouton ? undefinedLe second code, lui t'enverra : this _level0 :: chemin vers le bouton ? _level0.bouton2
Lorsque tu utilises l'écriture : on(), tu es donc déjà dans ton clip, le this fait référence à ton clip. Comme ton bouton n'a pas (à l'intérieur de lui) de clip nommé "bouton1", il te renvoit undefined
En gros, tu ne travailles pas sur le même niveau
Chais pas si j'ai été plus clair
--------- Darkrats ---------
la loi est dure mais c'est la loi
-------- Infograpix --------
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 20081 24 avril 2007 à 10:26
Salut,
D'après ce que tu dis, ça marche avec le this, j'en déduis donc que tu as mis le code directement sur le clip, ai-je raison ?
Le this fait toujours référence à l'endroit où on se trouve. Si je mets un this dans ce genre de code :
bouton.onRelease = function(){
trace(this._name);
}
le this fait référence au clip "bouton".
Dans ce cas ci :
// Code mis sur un calque vide du root
trace(this._name);
le this fait référence au root car il n'est associé à aucun clip
Dans ton cas, tu as sûrement mis ton code sur ton clip "rectangle" et donc ton this fait référence au clip (comme mon premier exemple)
Une chose extrêment importante : abandonne l'utilisation des "on() et onClipEvent()" ça t'aidera à éviter certains pièges (vas voir le lien)
A ta place, je mettrais ce code dans un calque (et non sur un clip) :
Code :
this.onEnterFrame() = function(){
if(Key.isDown(Key.RIGHT)){
rectangle._x += 1;
}
Fin du code
Le code doit être mis sur un calque au même niveau que ton clip rectangle (sinon faut retoucher le ciblage du clip)
Voilà, j'espère avoir pu t'éclairer
--------- Darkrats ---------
la loi est dure mais c'est la loi
-------- Infograpix --------
cs_darkthief
Messages postés23Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 6 décembre 2007 24 avril 2007 à 17:41
Salut,
D'après ce que tu dis, ça marche avec le this, j'en déduis donc que tu as mis le code directement sur le clip, ai-je raison ?
oui tout à fait.
Pour le this j'avais bien compris son fonctionnement, ce que je ne comprends pas en fait, c'est pourquoi si je le remplace par le nom du clip, ca ne marche plus alors qu le code est dans le clip directement.
Une chose extrêment importante :
abandonne l'utilisation des "on() et onClipEvent()" ça t'aidera à éviter certains pièges (vas voir le lien)
Yep j'avais cru comprendre ca, merci quand même pour le topic j'irais voir,
En fait si tu veux je bosse en parallele avec un bouquin et donc le code que j'ai mis dans mon premier post c'est la première étape.
Ensuite on optimise en mettant le code sur un calque et non plus dans le clip, on enleve les onClipEvent() etc etc.
mais je suis du genre à chercher la petite bête alors je cherche pourquoi ca marche pas avec cette première étape, histoire d'éviter les boulettes les plus simples après...