Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS1/AS2
AS1/AS2 Questions relatives à la programmation ActionScript 1 et 2 (Cours AS2)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2008, 15h17   #1
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Par défaut this["variable"+i].onRollOver = function(){ etc.

Bonjour à tous,

Voilà je me bat avec ce code depuis ce matin, j'ai réussi à le faire marcher en dehors d'une boucle, mais dans la boucle il ne veut rien savoir. (alpha1 vaut 50 et alpha2 vaut 100, et nbboucle vaut 11).

Le code qui ne marche pas :
Code :
1
2
3
4
for(i = nbboucle; i > 0; i--){
	this["pion"+i].onRollOver = function(){ this["pion"+i]._alpha = alpha1; }
	this["pion"+i].onRollOut = function(){ this["pion"+i]._alpha = alpha2; }
}
Le code qui marche :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
onEnterFrame = function(){
	pion1.onRollOver = function(){ pion1._alpha = alpha1; }; pion1.onRollOut = function(){ pion1._alpha = alpha2; }
	pion2.onRollOver = function(){ pion2._alpha = alpha1; }; pion2.onRollOut = function(){ pion2._alpha = alpha2; }
	pion3.onRollOver = function(){ pion3._alpha = alpha1; }; pion3.onRollOut = function(){ pion3._alpha = alpha2; }
	pion4.onRollOver = function(){ pion4._alpha = alpha1; }; pion4.onRollOut = function(){ pion4._alpha = alpha2; }
	pion5.onRollOver = function(){ pion5._alpha = alpha1; }; pion5.onRollOut = function(){ pion5._alpha = alpha2; }
	pion6.onRollOver = function(){ pion6._alpha = alpha1; }; pion6.onRollOut = function(){ pion6._alpha = alpha2; }
	pion7.onRollOver = function(){ pion7._alpha = alpha1; }; pion7.onRollOut = function(){ pion7._alpha = alpha2; }
	pion8.onRollOver = function(){ pion8._alpha = alpha1; }; pion8.onRollOut = function(){ pion8._alpha = alpha2; }
	pion9.onRollOver = function(){ pion9._alpha = alpha1; }; pion9.onRollOut = function(){ pion9._alpha = alpha2; }
	pion10.onRollOver = function(){ pion10._alpha = alpha1; }; pion10.onRollOut = function(){ pion10._alpha = alpha2; }
	pion11.onRollOver = function(){ pion11._alpha = alpha1; }; pion11.onRollOut = function(){ pion11._alpha = alpha2; }
}
Vous voyez pourquoi ? Merci d'avance !

A noter que j'ai aussi essayer ça :
Code :
1
2
3
4
for(i = nbboucle; i > 0; i--){
	this["pion"+i].onRollOver = function(){ this._alpha = alpha1; }
	this["pion"+i].onRollOut = function(){ this._alpha = alpha2; }
}
puis ça :
Code :
1
2
3
4
for(i = nbboucle; i > 0; i--){
	OnEnterFrame = function(){ this["pion"+i].onRollOver = function(){ this._alpha = alpha1; } }
	OnEnterFrame = function(){  this["pion"+i].onRollOut = function(){ this._alpha = alpha2; } }
}
et que ça n'a pas non plus marché.

Merci d'avance et bonne année au passage !
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2008, 17h34   #2
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
Salut,

as-tu tracé les valeurs des variables pour voir d'ou vient le problème ?

il faudrait définir les variables alpha1 et alpha2 dans le _root ou le _global pour pouvoir y accéder sans delegate.

ex:

Code :
1
2
3
4
5
for(i = nbboucle; i > 0; i--)
{
    this["pion"+i].onRollOver = function(){ this._alpha = _root.alpha1; };
    this["pion"+i].onRollOut = function(){ this._alpha = _root.alpha2; };
}
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2008, 18h44   #3
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Déjà merci beaucoup d'avoir pris le temps de répondre.

Malheuresement ça ne marche pas. J'avais fait l'essai avant avec des valeurs fixe en remplaçant "alpha1" par 50 et "alpha2" par 100 directement et ça ne marchait pas non plus.

Tu vois autres chose qui pourrait faire bugger le script ?
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2008, 21h09   #4
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
Lut,

pour voir d'ou vient le problème il faut utiliser la fonction trace.

Code :
1
2
3
4
5
6
7
8
for(i = nbboucle; i > 0; i--)
{
    trace( this["pion"+i] );
    this["pion"+i].onRollOver = function()
    {
      trace( "roll over : " + this );
    };
}
+
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 09h53   #5
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Rebonjour, encore merci de m'aider. Le code que tu m'as fourni, renvoi ceci ? Celà te permet il de mieux comprendre mon problème ?

Code :
1
2
3
4
5
6
7
8
9
10
11
_level0.pion11
_level0.pion10
_level0.pion9
_level0.pion8
_level0.pion7
_level0.pion6
_level0.pion5
_level0.pion4
_level0.pion3
_level0.pion2
_level0.pion1
Au passage, merci pour le conseil avec le "trace" je suis tout débutant en actionscript et des petites astuces comme ça, ça m'aide beaucoup.

Encore merci d'avance.
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 12h44   #6
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
Lut,

en effet, cela permet de voir que le this["pion"+i] renvoi bien un clip donc pas de pb.

et lors du rollOver qu'es-ce qui est tracé ?
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 13h50   #7
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Le rollover je viens de tester il ne renvoit rien du tout même pas "roll over : ".

Tu y comprends quelque chose ?
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 14h26   #8
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
tu peux essayer comme ça :

Code :
1
2
3
4
5
6
 
var oClip:MovieClip = this["pion"+i];
oClip.onRollOver = function()
{
  trace("\o/");
};
+
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 14h35   #9
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Code :
1
2
3
4
5
6
for(i = nbboucle; i > 0; i--)
{
	var oClip:MovieClip = this["pion"+i];
	trace( oClip );
	oClip.onRollOver = function(){ trace("\o/"); }
}
J'ai essayé avec ce code, et ça me renvoi ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
_level0.pion11
_level0.pion10
_level0.pion9
_level0.pion8
_level0.pion7
_level0.pion6
_level0.pion5
_level0.pion4
_level0.pion3
_level0.pion2
_level0.pion1
Et le onRollOver ne marche pas, il ne renvoi pas "\o/".

Merci encore de prendre de ton temps pour m'aider.
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 14h42   #10
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
je pense pas que ça cause d'erreur mais il faut un point virgule à la finc de toutes tes instructions.

(rollOver = ..)
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 14h50   #11
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Effectivement tu as raison ça n'a rien changé. Pour toi le code semble bon ?

Tu veux le .fla et le .as pour regarder ?
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 15h40   #12
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
pourquoi pas, je regaredrai ce soir.

tu es bien en Flash 8 ?
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 15h53   #13
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Oui et bien c'est sympa de ta part, je te l'envoi sur ton mail. Merci encore.
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 16h20   #14
Membre Expert
 
Avatar de dom_dev
 
Inscription : février 2006
Messages : 2 067
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 2 067
Points : 2 114
Points : 2 114
bonjour,

j'ai suivit vos post par curiosité et l'exemple de beekeep marche très bien...
Code :
1
2
3
4
5
6
7
8
for(i = nbboucle; i > 0; i--)
{
    trace( this["pion"+i] );
    this["pion"+i].onRollOver = function()
    {
      trace( "roll over : " + this );
    };
}
l'exemple :
Pièce jointe 23761
__________________
Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
MERCI
dom_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 16h35   #15
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Oui ton script marche. Mais moi dans mon code je gènère dynamiquement le clip. Et lorsque je test (beepkeep pourra attester je lui ai envoyé le code), la main indiquant un bouton ne s'affiche même pas au passage de ma souris sur le clip "pion1" créé dynamiquement.

Ca pourrait venir de là ?
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 19h38   #16
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
Citation:
Envoyé par Vantik
Ca pourrait venir de là ?
tu n'a qu'à tester ;)

par exemple place un clip à la main dans ton anim, nomme la puis applique le bout de code dessus.

si tu arrive à tracer le clip sans que le rollOver fonctionne on cherchera ..

+


PS: je peux pas tester de toute façon avec tes fichiers.
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 07h15   #17
Membre Expert
 
Avatar de dom_dev
 
Inscription : février 2006
Messages : 2 067
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 2 067
Points : 2 114
Points : 2 114
bonjour,
effectivement si c'est la seule différence cela vient de là, maintenant savoir pourquoi est une autre histoire...
__________________
Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
MERCI
dom_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 09h50   #18
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Je n'ai pas suffisament de connaissance dans le language pour déterminé seul si celà vient de mon code. Voici mon code de création des clips qui me servent dans cette page :

Code :
1
2
3
4
5
6
// Importation des joueurs
for(i = nbjoueurs; i > 0; i--){
	createEmptyMovieClip("pion"+i, _root.getNextHighestDepth());
	this["pion"+i].loadMovie("img/pions/"+this["img_j"+i]); this["pion"+i]._x = this["pos_pion"+i][0]; this["pion"+i]._y = this["pos_pion"+i][1];
	trace(this["pion"+i]);
}
Et le trace renvoi :

Code :
1
2
3
4
5
6
7
8
9
10
11
_level0.pion11
_level0.pion10
_level0.pion9
_level0.pion8
_level0.pion7
_level0.pion6
_level0.pion5
_level0.pion4
_level0.pion3
_level0.pion2
_level0.pion1
Et ensuite je créé mes RollOver dans une nouvelle boucle, ainsi :

Code :
1
2
3
4
5
6
 
// Création des RollOver
for(i = nbjoueurs; i > 0; i--){
	this["pion"+i].onRollOver = function(){ this["pion"+i]._alpha = _root.alpha1; }
	this["pion"+i].onRollOut = function(){ this["pion"+i]._alpha = _root.alpha2; }
}
Merci bien de m'avoir aidé jusqu'ici les gars en tous cas.
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 13h35   #19
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
Salut,

pour ne pas utiliser le this["pion"+i] lors de la creation des rollOver/Out je te propose ceci :

creation des clip dans un clip conteneur :
Code :
1
2
3
4
5
6
7
8
9
10
// Importation des joueurs
_level0.createEmptyMovieClip("conteneur", _level0.getNextHighestDepth());
for(i = nbjoueurs; i > 0; i--)
{
    _level0.conteneur.createEmptyMovieClip("pion"+i, _level0.conteneur.getNextHighestDepth());
    _level0.conteneur["pion"+i].loadMovie("img/pions/"+this["img_j"+i]);
    _level0.conteneur["pion"+i]._x = this["pos_pion"+i][0];
    _level0.conteneur["pion"+i]._y = this["pos_pion"+i][1];
    trace(_level0.conteneur["pion"+i]);
}
création des évenements :
Code :
1
2
3
4
5
6
7
8
9
10
11
for (i in _level0.conteneur)
{
 if (_level0.conteneur[i] instanceof MovieClip)
 {
  trace(_level0.conteneur[i]._name);
  _level0.conteneur[i].onRollOver = function()
  {
   trace(this);
  };
 }
}
;)
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 15h12   #20
Invité de passage
 
Inscription : mai 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 22
Points : 3
Points : 3
Merci encore pour ta patience. Il y a toujours un soucis car le rollover ne fonctionne pas.

Le premier trace renvoi ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
_level0.pion11
_level0.pion10
_level0.pion9
_level0.pion8
_level0.pion7
_level0.pion6
_level0.pion5
_level0.pion4
_level0.pion3
_level0.pion2
_level0.pion1
Le second ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
pion1
pion2
pion3
pion4
pion5
pion6
pion7
pion8
pion9
pion10
pion11
Et le dernier au survol de l'élément ne renvoi rien. Le code semble bon depuis le début et pourtant ça ne marche pas, c'est un bug de flash ?
Vantik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h58.


 
 
 
 
Partenaires

Hébergement Web