OVH Cloud OVH Cloud

[FLAMX] Encore des problèmes de chemin dynamique

8 réponses
Avatar
Kalimbra
Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
dans un clip qui doit controler un clip selon un choix fait auparavant

Code :

on (press){
eval("_root."+_root.instrument).gotoAndPlay(2);
trace ("press="+eval("_root."+_root.instrument));
//_root.piano1.gotoAndPlay(2);
}



et pourtant ça ne fonctionne pas (pour info en direct ça fonctionne) ..

j'ai vérifié dans des vieux flash , le même code fonctionne ..

comprends plus rien moi .

8 réponses

Avatar
Krystyan
j'ai eu un souci identique, le chemin est parfaitement créé mais le swf ne
comprends pas ??!!??, j'ai réussi à contourner le pb en initialisant une
variable qd l'utilisateur clique sur le bouton et en faisant tourner un mc
qui lui controle la variable et effectue le gotoAndPlay() si la variable est
initialisée
... c'est une solution batarde mais c'est la seule que j'ai pu faire
fonctionner....
:(
c'est vrai que c'est gavant d'avoir des petits bugs à gauche à droite qui
font perdre enormement de temps en controle et debug. on pense toujours
d'abord à une erreur de notre part et on se gave de 2 plombes de controle
sur notre code alors que cela vient du .fla...


--
Krystyan
Avant de poser une question, lire (et comprendre) ceci :
http://faqmm.free.fr

"Kalimbra" a écrit dans le message de
news:cp3u3d$lrn$
Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
dans un clip qui doit controler un clip selon un choix fait auparavant

Code :

on (press){
eval("_root."+_root.instrument).gotoAndPlay(2);
trace ("press="+eval("_root."+_root.instrument));
//_root.piano1.gotoAndPlay(2);
}



et pourtant ça ne fonctionne pas (pour info en direct ça fonctionne) ..

j'ai vérifié dans des vieux flash , le même code fonctionne ..

comprends plus rien moi .


Avatar
saturnino
Bonjour,

vous utilisez Flash MX, il est donc préférable d'utiliser la syntaxe MX:

1 mettre tout le code dans une frame sur la scène principale
2 poser ses objets dans des calques sur le root ou dans des clips prévu à
cet effet.
3 bannir autant que possible le code posé sur les clips ou dans les sous
clips.

exemple:
2 clips sur la scène:

"instrument" et "piano"

dans la première frame sur la scène:

_root.instrument.onPress = function() {
_root.piano.gotoAndPlay(2);
trace(this);
};


Cordialement,
Christophe Iaïchouchen
www.saturnino-freelance.com

"Kalimbra" a écrit dans le message de news:
cp3u3d$lrn$
Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
dans un clip qui doit controler un clip selon un choix fait auparavant

Code :

on (press){
eval("_root."+_root.instrument).gotoAndPlay(2);
trace ("press="+eval("_root."+_root.instrument));
//_root.piano1.gotoAndPlay(2);
}



et pourtant ça ne fonctionne pas (pour info en direct ça fonctionne) ..

j'ai vérifié dans des vieux flash , le même code fonctionne ..

comprends plus rien moi .


Avatar
estampida
on (press){
_root[_root.instrument].gotoAndPlay(2);
trace( _root[_root.instrument]);
}

ou

monBouton.onPress=function(){
_root[_root.instrument].gotoAndStop(2);
trace(_root.instrument);
}

J'aime pas trop les "_root" donc si tu pouvais remplacer par un chemin
relatif plutôt, ça serait mieux ;)
--
e-S-tampida
http://www.alienintelligentacoustic.co.nr
"L'humilité épargne les affres de l'humiliation."

Flash Projects & eXPeriences :
http://development.bbri.be/elearning/
http://development.bbri.be/ictp/xperimentz/
--

"Kalimbra" wrote in message
news:cp3u3d$lrn$
Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
dans un clip qui doit controler un clip selon un choix fait auparavant

Code :

on (press){
eval("_root."+_root.instrument).gotoAndPlay(2);
trace ("press="+eval("_root."+_root.instrument));
//_root.piano1.gotoAndPlay(2);
}



et pourtant ça ne fonctionne pas (pour info en direct ça fonctionne) ..

j'ai vérifié dans des vieux flash , le même code fonctionne ..

comprends plus rien moi .


Avatar
Krystyan
<troll>
J'imaginais que, tout en passant à FMX et FMXPro, il serait toujours
possible de mettre en place des scripts basiques déjà utilisé sous F5 par
exemple...
Parce qu'inculquer l'ergonomie et la méthode de développement de Flash à des
graphistes n'est pas toujours aisée, si maintenant en plus, il faut leur
expliquer que leur méthode de développement sont archaïques et totalement
inopérantes suite à la sortie d'une nouvelle version du logiciel... euh...
je croyais que c'étais le logiciel qui s'adaptait au besoin de l'utilisateur
et non l'inverse...
Enfin ça rejoint la solution que j'avais utilisé ; en gros utilisé de moins
en moins la timeline et les evenements direct sur les symboles et quasiment
tout coder sur une et une seule image clé ....
C'est ma graphiste qui va être heureuse, elle venait juste de comprendre que
pour lancer une instruction à partir d'un bouton il fallait juste mettre
l'instruction "sur" le bouton...
:)
</troll>


--
Krystyan
Avant de poser une question, lire (et comprendre) ceci :
http://faqmm.free.fr


"saturnino" a écrit dans le message de
news:cp40ps$op2$
Bonjour,

vous utilisez Flash MX, il est donc préférable d'utiliser la syntaxe MX:

1 mettre tout le code dans une frame sur la scène principale
2 poser ses objets dans des calques sur le root ou dans des clips prévu à
cet effet.
3 bannir autant que possible le code posé sur les clips ou dans les sous
clips.

exemple:
2 clips sur la scène:

"instrument" et "piano"

dans la première frame sur la scène:

_root.instrument.onPress = function() {
_root.piano.gotoAndPlay(2);
trace(this);
};


Cordialement,
Christophe Iaïchouchen
www.saturnino-freelance.com

"Kalimbra" a écrit dans le message de news:
cp3u3d$lrn$
> Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
> dans un clip qui doit controler un clip selon un choix fait auparavant
>
> Code :
>
> on (press){
> eval("_root."+_root.instrument).gotoAndPlay(2);
> trace ("press="+eval("_root."+_root.instrument));
> //_root.piano1.gotoAndPlay(2);
> }
>
>
>
> et pourtant ça ne fonctionne pas (pour info en direct ça fonctionne) ..
>
> j'ai vérifié dans des vieux flash , le même code fonctionne ..
>
> comprends plus rien moi .




Avatar
saturnino
> monBouton.onPress=function(){
_root[_root.instrument].gotoAndStop(2);
trace(_root.instrument);
}




pourquoi écrire "_root[_root.instrument]." ?

"_root.instrument." suffit largement...

les crochets sont parcontre utiles lors d'une instanciation dynamique par
exemple:

for (var i = 0 ; i< 10 ; i++){

_root["instrument_"+i].onPress=function(){

trace(this);

}


}

Cordialement,
Saturnino
www.saturnino-freelance.com



"estampida" a écrit dans le message de news:
cp4265$qar$
on (press){
_root[_root.instrument].gotoAndPlay(2);
trace( _root[_root.instrument]);
}

ou

monBouton.onPress=function(){
_root[_root.instrument].gotoAndStop(2);
trace(_root.instrument);
}

J'aime pas trop les "_root" donc si tu pouvais remplacer par un chemin
relatif plutôt, ça serait mieux ;)
--
e-S-tampida
http://www.alienintelligentacoustic.co.nr
"L'humilité épargne les affres de l'humiliation."

Flash Projects & eXPeriences :
http://development.bbri.be/elearning/
http://development.bbri.be/ictp/xperimentz/
--

"Kalimbra" wrote in message
news:cp3u3d$lrn$
Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
dans un clip qui doit controler un clip selon un choix fait auparavant

Code :

on (press){
eval("_root."+_root.instrument).gotoAndPlay(2);
trace ("press="+eval("_root."+_root.instrument));
//_root.piano1.gotoAndPlay(2);
}



et pourtant ça ne fonctionne pas (pour info en direct ça fonctionne) ..

j'ai vérifié dans des vieux flash , le même code fonctionne ..

comprends plus rien moi .






Avatar
zwetan
> Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
dans un clip qui doit controler un clip selon un choix fait auparavant

Code :

on (press){
eval("_root."+_root.instrument).gotoAndPlay(2);
trace ("press="+eval("_root."+_root.instrument));
//_root.piano1.gotoAndPlay(2);
}



et pourtant ça ne fonctionne pas (pour info en direct ça fonctionne) ..

j'ai vérifié dans des vieux flash , le même code fonctionne ..

comprends plus rien moi .



le eval() assigné sur la gauche ne marche plus depuis FlashMX

flash5:
eval( toto ) = "blah"; //ca marche

flashMX
eval( toto ) = "blah"; //marche pas

et pour un appelle de methode c est pareil

eval("_root."+_root.instrument).gotoAndPlay(2);
ca ne peut pas marcher avec FlashMX ou +

par contre:
var target = eval("_root."+_root.instrument); //assignement a droite
target.gotoAndPlay(2);

ca, ca marche
(a condition que eval("_root."+_root.instrument); pointe au bon endroit)

apres ca donne qd meme bcp de code pas propre du tout de faire comme ca
mais ca c est un autre sujet :)

zwetan
Avatar
estampida
A moins que je sois complètement naze, c'était bien la question posée...
(cf:Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
dans un clip qui doit controler un clip selon un choix fait auparavant)
De plus, si on regarde le code (orienté flash 4) donné par Kalimbra, on voit
tout de suite ce qu'il veut faire. Ton commentaire est donc parfaitement
inutile.
J'ai pas besoin de cours "basiques" sur les instances dynamiques mais merci
quand même pour ceux qui en ont besoin... :o)
Avatar
saturnino
>Ton commentaire est donc parfaitement inutile.


idem


J'ai pas besoin de cours "basiques" sur les instances dynamiques mais
merci


ca m'étonnait aussi :)

saturnino.

"estampida" a écrit dans le message de news:
cp4498$slp$
A moins que je sois complètement naze, c'était bien la question posée...
(cf:Voila, j'ai un un script tout con( enfin je le pensais) sur un bouton,
dans un clip qui doit controler un clip selon un choix fait auparavant)
De plus, si on regarde le code (orienté flash 4) donné par Kalimbra, on
voit tout de suite ce qu'il veut faire. Ton commentaire est donc
parfaitement inutile.
J'ai pas besoin de cours "basiques" sur les instances dynamiques mais
merci quand même pour ceux qui en ont besoin... :o)