OVH Cloud OVH Cloud

[FLAMX] this.[chose] pourquoi et quoi !

5 réponses
Avatar
Iam Noone
Bonjour à tous,
j'utilise très souvent des fonctions où s'effectue une évaluation directe
d'un bouton dans une fonction par exemple :
function maFonction(bouton){
this[bouton].onRelease=function(){
instruction;
}
}
maFonction("debut_btn");
maFonction("prec_btn");
maFonction("suivant_btn");
maFonction("fin_btn");

Les questions que je me pose sont :
- que représente vraiment le this qui précède mon [ ]
- peut-on ne rien mettre ?
- _root peut convenir parfois...

Bref c'est pas très clair pour moi !

Merci de vos lumières en POO !

5 réponses

Avatar
Jérôme Courivaud
Bonjour,

Dans ta fonction this ne sert pas à grand chose est peut être remplacé par
_root[]. tu peux même ajouter une ligne :

var leBouton = eval("bouton");
leBouton.onRelease = ...

l'idée étant que le texte passé en paramètre à la fonctionne fasse
directement référence à une occurrence de clip sur la scène (_root). eval()
évalue la chaine de caractère est voie si sur la scène il y a un clip qui
possède ce nom d'occurrence.

this est plutôt utilsé dans la POO pour faire directement référence à
l'objet instancié sur la class :

// création d'un objet avec un paramètre :

var Personne = new Object();
//
Personne = function(aNom){
this.pNom = aNom;
}
//
// je crée une instance de cette objet :
var alfred = new Personne("Alfred Dechezred");

la valeur passée en paramètre devient la valeur du paramètre this.pNom dans
l'objet plus haut. Dans ce cas this fait référence à l'objet instancié
alfred, soit this = alfred. ce qui fait que l'on peut faire :

trace(alfred.pNom)

il écrit : Alfred Dechezred

voilà



"Iam Noone" a écrit dans le message de
news:bo5rsq$9pq$
Bonjour à tous,
j'utilise très souvent des fonctions où s'effectue une évaluation directe
d'un bouton dans une fonction par exemple :
function maFonction(bouton){
this[bouton].onRelease=function(){
instruction;
}
}
maFonction("debut_btn");
maFonction("prec_btn");
maFonction("suivant_btn");
maFonction("fin_btn");

Les questions que je me pose sont :
- que représente vraiment le this qui précède mon [ ]
- peut-on ne rien mettre ?
- _root peut convenir parfois...

Bref c'est pas très clair pour moi !

Merci de vos lumières en POO !




Avatar
Iam Noone
Mais eval ( ) est plutôt dépriécié à l'heure actuelle, non ?

"Jérôme Courivaud" a écrit dans le message de
news: bo5t0o$brn$
Bonjour,

Dans ta fonction this ne sert pas à grand chose est peut être remplacé par
_root[]. tu peux même ajouter une ligne :

var leBouton = eval("bouton");
leBouton.onRelease = ...

l'idée étant que le texte passé en paramètre à la fonctionne fasse
directement référence à une occurrence de clip sur la scène (_root).


eval()
évalue la chaine de caractère est voie si sur la scène il y a un clip qui
possède ce nom d'occurrence.

this est plutôt utilsé dans la POO pour faire directement référence à
l'objet instancié sur la class :

// création d'un objet avec un paramètre :

var Personne = new Object();
//
Personne = function(aNom){
this.pNom = aNom;
}
//
// je crée une instance de cette objet :
var alfred = new Personne("Alfred Dechezred");

la valeur passée en paramètre devient la valeur du paramètre this.pNom


dans
l'objet plus haut. Dans ce cas this fait référence à l'objet instancié
alfred, soit this = alfred. ce qui fait que l'on peut faire :

trace(alfred.pNom)

il écrit : Alfred Dechezred

voilà



"Iam Noone" a écrit dans le message de
news:bo5rsq$9pq$
> Bonjour à tous,
> j'utilise très souvent des fonctions où s'effectue une évaluation


directe
> d'un bouton dans une fonction par exemple :
> function maFonction(bouton){
> this[bouton].onRelease=function(){
> instruction;
> }
> }
> maFonction("debut_btn");
> maFonction("prec_btn");
> maFonction("suivant_btn");
> maFonction("fin_btn");
>
> Les questions que je me pose sont :
> - que représente vraiment le this qui précède mon [ ]
> - peut-on ne rien mettre ?
> - _root peut convenir parfois...
>
> Bref c'est pas très clair pour moi !
>
> Merci de vos lumières en POO !
>
>




Avatar
Iam Noone
Pourquoi le this devant [ ] ne sert pas à grand chose ? Ne faut-il pas
indiquer un conteneur ?
Avatar
Jérôme Courivaud
je ne sais pas si le eval est déprécié moi je l'aime bien. Ca permet de
synthétiser le code et le rendre plus clair.

je préfère :

var clip = eval("bouton"+i+"_"+j);
clip.play();

à

_root["bouton"+i+"_"+j].play;

tout simplement

dans le cas de ta fonction this ne sert à rien parce que justement le
contener n'est pas un objet créée mais la scène elle même soit _root[].




"Iam Noone" a écrit dans le message de
news:bo60oa$rpp$
Pourquoi le this devant [ ] ne sert pas à grand chose ? Ne faut-il pas
indiquer un conteneur ?




Avatar
zwetan
>
Mais eval ( ) est plutôt dépriécié à l'heure actuelle, non ?




non eval() n'est pas déprécié
il ne sert pas a remplacer this[...] ou _root[...]
c'est un parser de code (pas entièrement implémenté pour ActionScript)
cad que eval prends une chaine string et l'evalue en temps reel
c'est une fonction a part entière

mais voici un conseil: ne jamais jamais jamais utiliser "eval"
il y a toujours une meilleure solution, qui sera plus optimisée,
car eval c'est lent, voir meme tres lent

un :
this[ referenceString ].otherobject
ou un:
_root[ referenceString ].otherobject
ou meme un
referenceObject.otherobject

ce sera au moins 2 a 3 fois plus rapide que faire un eval,
le plus rapide étant le dernier

ton code (qui n'a rien mais rien a voir avec de la POO au passage)
pourrait s'ecrire comme ca:

function maFonction( bouton )
{
bouton.onRelease = function()
{
// code here;
}
}

maFonction( name_btn );


une autre methode (amha plus propre) serait:

BoutonHelper = {};
BoutonHelper.onRelease = function()
{
// code here
}

name_btn.onRelease = BoutonHelper.onRelease;


pour de l'Orienté Objet ce serait bien plus compliqué
que une simple function...

zwetan