我正在构建一张宾果卡,并使用starling button类来获取卡上的数字。
如果我使用bitmapfont或普通字体,则fps从40下降到10。 如果我只使用没有字体的纹理,则fps保持不变。
我做错了什么?
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);
}
答案 0 :(得分:1)
我怀疑你最终得到了大量的平局电话。尝试启用统计监视器以查看。
在一个地方使用的按钮很多。每个都包括按钮的纹理以及标签的单独文本字段。文本字段将导致额外的绘制调用,因为它会切换上下文。由于你有大量的宾果游戏(宾果游戏25个),你会得到大约50个画面调用的东西,因为上下文在图像和文本之间来回切换。即使位图字体位于纹理图集中,也会发生。
更好,更高效的方法是跳过Button并创建自己的Image子类,显示一个或多个数字图像并自行管理触摸事件。