BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010 28 juil. 2005 à 17:01
petit erratum et je m'arretes là :
for (var id in _root) {
if (eval([id]).toString() == "top30") {
trace([id]+" est un occurence de myObject");
}
}
en effet, le "this" est inutile puisqu'initialisé à la construction de la classe par la déclaration de toString et le passage de traceThisToString comme paramettre.
BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010 28 juil. 2005 à 16:19
Hé le plus beau, c'est que ça marche.
voici comment à partir de l'exemple précédent on peu récupérer les objets présent dans l'anim avec un boucle "for in"
for (var id in _root) {
if (eval([id]).toString(this) == "window") {
trace([id]);
}
}
(notez que for in n'accepte que String comme parametre)
je répette (pour ceux qui y mettraient de la mauvaise volontée) que ce qui m'interresse, c'est de simuler :
if(typeof ([id] == "movieclip")
en passant le nom de la classe comme paramettre de type.
@++ et bon code.
BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010 28 juil. 2005 à 12:39
slt top30
très interressant comme travail.
plongé dans mes codes de débogageje cherchais un moyen de simuler le fameux typeof().
en etudian ton code, au début j'ai pas trop compris, puis j'ai réalisé que tu faisais une surcharge de la fonction globale toString.
de là m'est venue cette idée :
trace ( theObject.toString(this) ) ;
qui peu se traduire par retourne la valeur de theObject sous forme de chaine (et on revient au typeof() qui m'interresse).
soit pour ma classe :
class myObject
{
private var name : String = "top30";
public var toString : Function = traceThisToString;
public function myObject ()
{
}
private function traceThisToString ()
: String
{
var o:Object = eval ("this");
return o.name ;
}
}
et pour le fla :
theObject = new myObject () ;
trace ( theObject.toString(this) ) ;
de fait, ton code m'a rendu ce grand service : simuler typeof() attribuant un nom perso sous forme de chaine à une classe.
cette approche est très interressante.
bonne continuation dans le hack top30, ça poura donner de nouvelles idées.
el djawel
Messages postés1Date d'inscriptionmercredi 29 juin 2005StatutMembreDernière intervention19 juillet 2005 19 juil. 2005 à 09:21
hum ca a l'air intéressant tout plein ca... je le met en pratique et je reviens
top30
Messages postés1158Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention 6 août 2010 18 juil. 2005 à 19:09
Et le hacking c'est pas une sorte de bricolage pour atteindre des buts non désirés par les créateurs d'un language ? :\
SuperDevy
Messages postés842Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention 2 juillet 2007 18 juil. 2005 à 18:17
>"Je me demande même si c'est pas limite du "hacking" ???"
En tout cas, c'est du bricolage ...
C'est marrant cette utilisation de eval, comme quoi ça peut encore être utile parfois !
28 juil. 2005 à 17:01
for (var id in _root) {
if (eval([id]).toString() == "top30") {
trace([id]+" est un occurence de myObject");
}
}
en effet, le "this" est inutile puisqu'initialisé à la construction de la classe par la déclaration de toString et le passage de traceThisToString comme paramettre.
28 juil. 2005 à 16:19
voici comment à partir de l'exemple précédent on peu récupérer les objets présent dans l'anim avec un boucle "for in"
for (var id in _root) {
if (eval([id]).toString(this) == "window") {
trace([id]);
}
}
(notez que for in n'accepte que String comme parametre)
je répette (pour ceux qui y mettraient de la mauvaise volontée) que ce qui m'interresse, c'est de simuler :
if(typeof ([id] == "movieclip")
en passant le nom de la classe comme paramettre de type.
@++ et bon code.
28 juil. 2005 à 12:39
très interressant comme travail.
plongé dans mes codes de débogageje cherchais un moyen de simuler le fameux typeof().
en etudian ton code, au début j'ai pas trop compris, puis j'ai réalisé que tu faisais une surcharge de la fonction globale toString.
de là m'est venue cette idée :
trace ( theObject.toString(this) ) ;
qui peu se traduire par retourne la valeur de theObject sous forme de chaine (et on revient au typeof() qui m'interresse).
soit pour ma classe :
class myObject
{
private var name : String = "top30";
public var toString : Function = traceThisToString;
public function myObject ()
{
}
private function traceThisToString ()
: String
{
var o:Object = eval ("this");
return o.name ;
}
}
et pour le fla :
theObject = new myObject () ;
trace ( theObject.toString(this) ) ;
de fait, ton code m'a rendu ce grand service : simuler typeof() attribuant un nom perso sous forme de chaine à une classe.
cette approche est très interressante.
bonne continuation dans le hack top30, ça poura donner de nouvelles idées.
19 juil. 2005 à 09:21
18 juil. 2005 à 19:09
18 juil. 2005 à 18:17
En tout cas, c'est du bricolage ...
C'est marrant cette utilisation de eval, comme quoi ça peut encore être utile parfois !