martineapprendlephp
Messages postés1Date d'inscriptionjeudi 1 décembre 2011StatutMembreDernière intervention 1 décembre 2011 1 déc. 2011 à 15:03
Il n'y a que qui ait un problème avec la méthode non-définie "pizza"?
cs_billyben
Messages postés1Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 septembre 2011 12 sept. 2011 à 10:22
Salut, juste un petit tricks qui améliore sensiblement les perf : Le Math.random() est assez gourmand (bon, là il n'y en a que 3/frame, donc ce n'est pas la mort non plus!), mais on peux "simuler" un random via un Vector.<Number> de longueur fixe (pour les perf) que l'on rempli à l'aide de random à l'instanciation de la classe, on gagne pas mal au final sur des gros volumes d'appel à cette fonction (particulièrement dans un système de particule). Le tout est d'avoir une taille suffisante pour avoir un effet vraiment aléatoire, par exemple
private var randomVec:Vector.<Number>;
public function constructeur():void{
randomVec=new Vector.<Number>(1000, true);
for (vari:int=0; i<1000; i++)randomVec[i]=Math.random();
}
puis pour l'interroger dans le script, il suffit d'avoir une variable à incrémenter :
private var randId:int=0;
private function maFn(args):void{
var randNumber=randomVec[randId++%1000];
}
Sinon, pour l'enterFrame, perso je préfère utiliser un Timer, c'est plein de possibilités...
top30
Messages postés1158Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention 6 août 2010 12 sept. 2011 à 08:47
ParticuleGenerator(gravity)
La classe qui gère les particules (création, déplacement)
class ParticuleView(content,position,color);
La classe qui contient les données de chaque particule
Pour ce qui est du onRun...
PUBLIC function update(){
// La function qui actualise l'état de la particule
}
PRIVATE function updateHandler( $e:Event):void{
this.update();
}
Mais c'est vrai que c'est mieux 1 "enterFrame" qui exécute 200 fonctions que 200 "enterFrame" qui exécute 1 fonction...
aerolyte
Messages postés465Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 4 mai 20131 12 sept. 2011 à 01:01
Meme mieux utilise "foreach"
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 11 sept. 2011 à 20:55
tu places chaque particule que tu crées dans un tableau à la base de ton objet et tu fais un "for" dans ton unique enterframe pour cycler sur chaque particule et y exécuter "onRun".
Peg'
yasdar
Messages postés121Date d'inscriptionmercredi 12 janvier 2011StatutMembreDernière intervention19 mai 2012 11 sept. 2011 à 20:41
Oui c'est vrai les deux fonctions doivent être private .
Peg
j'ai penser à réduire l'utilisation des ENTER_FRAMES mais je vois pas comment.
j'aimerais bien savoir comment faire :
"La gestion de particules se ferait alors dans un tableau de type Vector. afin d'y avoir un accès rapide et précis."
cordialement.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 11 sept. 2011 à 17:43
Je suis d'accord avec Aerolyte : ces deux fonctions sont appelées uniquement ne interne de la classe, et n'ont donc pas à être "publiques".
Peg'
yasdar
Messages postés121Date d'inscriptionmercredi 12 janvier 2011StatutMembreDernière intervention19 mai 2012 10 sept. 2011 à 22:58
AEROLYTE
pourquoi vous pensez que onloop et onrun sont a mettre en private ?
aerolyte
Messages postés465Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 4 mai 20131 10 sept. 2011 à 22:51
idem, et il me semble que onloop et onrun sont a mettre en private
cordialement
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 10 sept. 2011 à 22:38
Bonsoir, ça sent la source convertie d'as2, ça ...
Alors juste pour info :
- Il est moins gourmand en cpu d'utiliser un seul et unique enterframe général au système de particule qui gère toutes particules dans une boucles que d'en placer un dans chacune des particules.
- La gestion de particules se ferait alors dans un tableau de type Vector. afin d'y avoir un accès rapide et précis.
Tu verras une diminution notable de la charge CPU une fois ces changements faits.
1 déc. 2011 à 15:03
12 sept. 2011 à 10:22
private var randomVec:Vector.<Number>;
public function constructeur():void{
randomVec=new Vector.<Number>(1000, true);
for (vari:int=0; i<1000; i++)randomVec[i]=Math.random();
}
puis pour l'interroger dans le script, il suffit d'avoir une variable à incrémenter :
private var randId:int=0;
private function maFn(args):void{
var randNumber=randomVec[randId++%1000];
}
Sinon, pour l'enterFrame, perso je préfère utiliser un Timer, c'est plein de possibilités...
12 sept. 2011 à 08:47
La classe qui gère les particules (création, déplacement)
class ParticuleView(content,position,color);
La classe qui contient les données de chaque particule
Pour ce qui est du onRun...
PUBLIC function update(){
// La function qui actualise l'état de la particule
}
PRIVATE function updateHandler( $e:Event):void{
this.update();
}
Mais c'est vrai que c'est mieux 1 "enterFrame" qui exécute 200 fonctions que 200 "enterFrame" qui exécute 1 fonction...
12 sept. 2011 à 01:01
11 sept. 2011 à 20:55
Peg'
11 sept. 2011 à 20:41
Peg
j'ai penser à réduire l'utilisation des ENTER_FRAMES mais je vois pas comment.
j'aimerais bien savoir comment faire :
"La gestion de particules se ferait alors dans un tableau de type Vector. afin d'y avoir un accès rapide et précis."
cordialement.
11 sept. 2011 à 17:43
Peg'
10 sept. 2011 à 22:58
pourquoi vous pensez que onloop et onrun sont a mettre en private ?
10 sept. 2011 à 22:51
cordialement
10 sept. 2011 à 22:38
Alors juste pour info :
- Il est moins gourmand en cpu d'utiliser un seul et unique enterframe général au système de particule qui gère toutes particules dans une boucles que d'en placer un dans chacune des particules.
- La gestion de particules se ferait alors dans un tableau de type Vector. afin d'y avoir un accès rapide et précis.
Tu verras une diminution notable de la charge CPU une fois ces changements faits.
Peg'