Diminution significative des performances lorsque j'utilise des polices de polices ou bitmap
-
11-12-2019 - |
Question
Je construis une carte de bingo et utilise la classe de boutons Starling pour les chiffres sur la carte.
Si j'utilise les polices bitmapfont ou normales, le FPS tombe de 40 à 10. Si j'utilise uniquement la texture sans les polices, le FPS reste le même.
Qu'est-ce que je fais mal ??
for(var i:int = 0; i < rows * cols ; i++)
{
var btn:Button = new Button(Assets.getTexture("btn"),String(i+1));
btn.fontName="dig"
btn.x = (i % cols) * (btn.width + spacerX) + btnXoffset;
btn.y = Math.floor(i / cols) * (btn.height + spacerY) + btnYoffset;
addChild(btn);
}
La solution
Je soupçonne que vous finissez par un bon nombre d'appels de dessin.Essayez d'activer le moniteur de statistiques de voir.
C'est beaucoup de boutons à utiliser au même endroit.Chacun comprend à la fois une texture pour le bouton ainsi qu'un champ de texte séparé pour l'étiquette.Le champ de texte provoquera un appel de tirage supplémentaire car il change de contextes.Puisque vous en avez un grand nombre d'entre eux (25 pour Bingo), vous vous retrouverez avec quelque chose de l'ordre des 50 appels de dessinés lorsque le contexte passe entre les images et le texte.Cela se produira
Une approche meilleure et plus performante consisterait à ignorer le bouton et à créer votre propre sous-classe d'image qui affiche une ou plusieurs de vos images numériques et gère les événements tactiles à ses propres.