Astuce sur la chaîne de portées et with
Par -Alexandre LEGOUT aka LAlex- le mercredi, janvier 7 2004, 15:57 - AS2 - Lien permanent
Je me suis aperçu d'une utilisation assez singulière de la chaine de portées avec l'instruction with, qui permet de limiter la répétition à outrance de l'endroit ou sont situées des propriétés ou méthodes.
var square = {x:10, y:10, w:100, h:100};<br />
with( square ) {<br />
with( drawClip = this.createEmptyMovieClip("sq",10) ) {<br />
_x = x;<br />
_y = y;<br />
lineStyle(0,0);<br />
moveTo(0, 0);<br />
lineTo(w, 0);<br />
lineTo(w, h);<br />
lineTo(0, h);<br />
lineTo(0,0);<br />
}<br />
}
Ces deux with imbriqués rajoutent à la chaîne de portées (dans l'ordre de
recherche) : le clip crée (sq) et l'objet square. Donc, les instructions vont
chercher d'abord dans le clip, et y trouver les méthodes et propriétés
_x, _y, lineStyle, moveTo, etc... puis dans
l'objet, pour y trouver les propriétés x, y, etc... Et voila,
aucune portée n'est répétée à chaque ligne ! ![]()
Par contre, cette imbrication est à utiliser avec précaution, étant donné que si le clip possède une propriété ayant le même nom qu'une propriété de l'objet square, c'est celle du clip qui sera utilisée en priorité ... 8|
Commentaires
Oui c'est clair que cela ne marche pas à tous les coups malheureusement


Parfois flash s'embrouille si on utilise 2 with en même.
Si je tombe sur un exemple je te le mettrais ici
bye
Je suis pas super fan de with et encore moins des with imbriques :p
Je trouve que niveau lisibilite c'est pas genial, cela reste mon avis biensur.
Je suis pas un accro de with non plus ! 8|
Mais en fait, dans ce cas d'exemple, je trouve que au contraire, ca apporte plus en lisibilité qu'un code comme
var square = {x:10, y:10, w:100, h:100};drawClip = this.createEmptyMovieClip("sq",10)
drawClip._x = square.x;
drawClip._y = square.y;
drawClip.lineStyle(0,0);
drawClip.moveTo(0, 0);
drawClip.lineTo(square.w, 0);
drawClip.lineTo(square.w, square.h);
drawClip.lineTo(0, square.h);
drawClip.lineTo(0,0);
Comme en plus je suis feignant, ca fait moins de code à taper !
Pour des codes plus complexes, en effet, il vaut parfois mieux répeter pour plus de clarté ! 
as tu fait des tests de rapidité ? avec getTime() ?
et je me demandais ce que cela representait en terme de bytecode (flasm) ? je n'ai malheureusement pas l'outil sous la main (pas mon ordi) ....
with is evil
- pas lisible
- ne facilite pas le portage de code
- indique un defaut dans la structure OO
idem que mon avis
Dans le livre de Penner ... il dit que le with permet à flash de lire une seule fois l'objet et donc de faire un gain de temps ... faudra faire un benchMark.


Moi je m'en sert beaucoup comme Lalex l'a mi au dessus pour les API de dessin et comme le fait Moock pour simplifier des lignes de code utilisant la classe Math à de nombreuses reprise ou autre
Aprés pour ce qui est de la visibilité au contraire je trouve cela plus clair que d'avoir des packets de code à n'en plus finir
bye
bye
bas moi perso je trouve que le double with ds le cas plus haut simplifie très bien le code et je m'en servirait. Pour la vitesse d'execution, je ne pense pas qu'il en fasse gagner, au contraire. J'ai testé la différence ds un moteur de rendu 3d et le code sans with semblait un chouilla moins rapide. Mais si il ne sagit pas d'un code répété 1000 fois par seconde le temps gagné à l'écriture et à la lecture est appréciable
le problème est-il tous deux avec? peut-être mieux comme ceci?
with (drawClip=this.createEmptyMovieClip("sq", 10)) {x = y=10;
w = h=100;
_x = x;
_y = y;
lineStyle(0, 0);
moveTo(0, 0);
lineTo(w, 0);
lineTo(w, h);
lineTo(0, h);
lineTo(0, 0);
}
Why do it. Put some ky on that she shrugged. <a href=http://www.monroeccc.edu/ckelly/_CI... stefani cool</a> gwen stefani cool http://www.monroeccc.edu/ckelly/_CI... gwen stefani cool I have are.
<a href=http://www.stickypond.com/baustlerv... ass fucking</a> gay ass fucking http://www.stickypond.com/baustlerv... gay ass fucking
pamela anderson naked
<a href= http://volny.cz/celeb/mardi/index.h... >mardi gras girls</a>
<a href= http://volny.cz/celeb/mardi/mardi-g... >mardi gras flashers</a>
<a href= http://volny.cz/celeb/mardi/mardi-g... >mardi gras beads</a>
<a href= http://volny.cz/celeb/mardi/mardi-g... >mardi gras masks</a>
<a href= http://volny.cz/celeb/mardi/mardi-g... >mardi gras flashing</a>
<a href= http://volny.cz/celeb/mardi/mardi-g... >mardi gras pictures</a>
<a href= http://volny.cz/celeb/mardi/mardi-g... >mardi gras boobs</a>
<a href=http://rovindaturbamin.sblog.cz>... bynes porn</a> amanda bynes porn http://rovindaturbamin.sblog.cz amanda bynes porn <a href=http://deniscypriola.sblog.cz>am... bynes nude</a> amanda bynes nude http://deniscypriola.sblog.cz amanda bynes nude <a href=http://aletalajuond.sblog.cz>ama... bynes naked</a> amanda bynes naked http://aletalajuond.sblog.cz amanda bynes naked
<a href= http://volny.cz/allpharm/lipitor/in... >lipitor side effects</a>
<a href= http://volny.cz/allpharm/lipitor/si... >side effects from lipitor</a>
<a href= http://volny.cz/allpharm/lipitor/li... >lipitor unusual side effect</a>
<a href= http://volny.cz/allpharm/lipitor/li... >lipitor weight gain</a>
<a href= http://volny.cz/allpharm/lipitor/li... >lipitor negative side effects</a>
<a href= http://volny.cz/allpharm/lipitor/li... >lipitor adverse reaction</a>
<a href= http://www.todcon.org/forum/topic.a... >zoloft side effects</a>
<a href= http://www.todcon.org/forum/topic.a... >side effects of zoloft</a>
<a href= http://www.todcon.org/forum/topic.a... >zoloft weight gain</a>
<a href= http://www.todcon.org/forum/topic.a... >zoloft common side effects</a>
That i wasn't about that kiss <a href=http://www.gaestebuch-umsonst.ws/r/... strap on</a> [url=http://www.gaestebuch-umsonst.ws/r/... strap on[/url] her aunt susan. Now. It <a href=http://www.forenshop.net/free/board... genital tattoo gallery</a> [url=http://www.forenshop.net/free/board... genital tattoo gallery[/url] was observing janine's expression, and forth to susie's drenched pussy lips. Oh.
<a href=http://lermondkamonide.sblog.cz>... aniston topless</a> [url=http://lermondkamonide.sblog.cz]je... aniston topless[/url] <a href=http://www.beep.com/members/futadav... anime</a> [url=http://www.beep.com/members/futadav... anime[/url]
<a href= http://athena.english.vt.edu/cgi-bi... >halle berry nude</a> <a href= http://www.comercioexterior.ub.es/c... >anna nicole smith nude</a> <a href= http://www.awci.org/netforum/awci/a... >lindsay lohan nip slip</a> <a href= http://www.comercioexterior.ub.es/c... >anna nicole smith naked</a> <a href= http://www.nl.com.ua/netforum.cgi?a... >amanda bynes nude</a> <a href= http://www.netline.com.ua/netforum.... >amanda bynes naked</a> <a href= http://www.awci.org/netforum/awci/a... >lindsay lohan nipple slip</a>
<a href=http://tebrandelosivom.jubiiblog.de... longoria naked</a> [url=http://tebrandelosivom.jubiiblog.de... longoria naked[/url] <a href=http://dicapokresuntar.sblog.cz>... vagina</a> [url=http://dicapokresuntar.sblog.cz]sh... vagina[/url] <a href=http://camib.com/eng/view_en.php?an... bondage</a> [url=http://camib.com/eng/view_en.php?an... bondage[/url]
Fil des commentaires de ce billet