Bonjour :]
J'ai un certain nombre de classes d'objet Objet1, Objet2, Objet3 et je voudrais créer un objet appartenant à l'une de ces classe mais de façon aléatoire.
Je ne trouve pas la syntaxe à utiliser...
Merci pour l'aide !
Bonjour :]
J'ai un certain nombre de classes d'objet Objet1, Objet2, Objet3 et je voudrais créer un objet appartenant à l'une de ces classe mais de façon aléatoire.
Je ne trouve pas la syntaxe à utiliser...
Merci pour l'aide !
Est ce que tes 3 objets implémente la meme interface ?
Est ce que tes 3 objets hérite de la meme base
Qu'elle est la différence entre les 3 ?
Avec ça on va pouvoir te répondre précisément car c'est un problème trop générique que t'a demandé avec trop de réponses différentes possible![]()
ce sont trois classes qui héritent de MovieClip. Il s'agit de trois objets de forme graphique différentes que j'ai créer avec l'éditeur sur le document. J'ai ensuite exporté ces les classes créées vers l'actionscript pour pouvoir les exploiter.
:]
Voila !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function randomObject():MovieClip{ var n:Number = Math.random(); if(n<0.33) return new Object1(); else return (n<0.66)?new Object2():new Object3(); }
salut les gars,
sinon stoker les occurrences dans un tableau (tb) et faire :
ca fonctionne sans tenir compte du nombre d'éléments dans le tableau car si tu en a une 10aine les conditions vont devenir très lourde a mettre en place
Code : Sélectionner tout - Visualiser dans une fenêtre à part trace(tb[Math.round(Math.random() * (tb.length - 1))]);
Le probleme de cette methode c'est que si t'a besoin de plusieurs occurence d'une classe sa marche pas.
Autre probleme si tu utilise qu'une occurence dans un tableau de 10 par exemple tu as instancié 10 objet pour s'en servir que d'un ^^
La VRAI solution c'est une class Factory , je vous laisse lire les tuto sur ce design pattern qui m'a sauvé plus d'une fois![]()
![]()
bien sur que ça marche très bien avec plusieurs occurrences de la même classe
pas la peine de ce prendre la tête, ya toujours une manière simple pour faire quelque chose, la même que précédemment :
dans ce cas la tu as juste a stocker dans le tableau le type !
et aprés faire un new :
Code : Sélectionner tout - Visualiser dans une fenêtre à part var tb:Array = [Button, Loader];
de cette manière tu ne vas instancier la classe que lorsque tu en as besoin ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part trace(new tb[Math.round(Math.random() * (tb.length - 1))]);
Oo je viens de tester ça marche nickel !
Je connaissais pas du tout cette technique de stocker un type ( ce qui me parait vachement louche au niveau théorique xD ) mais c'est rudement efficace !
Lolo power !![]()
Partager