1

我正在制作一张宾果卡,并使用八哥按钮类作为卡上的数字。

如果我使用位图字体或普通字体,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);
        }
4

1 回答 1

1

我怀疑您最终会收到大量的抽奖电话。尝试启用统计监视器以查看。

在一个地方可以使用很多按钮。每个都包括按钮的纹理以及标签的单独文本字段。文本字段将导致额外的绘图调用,因为它会切换上下文。由于您有大量的图像(宾果游戏为 25 个),当上下文在图像和文本之间来回切换时,您最终会得到大约 50 个绘制调用。即使位图字体在您的纹理图集中,也会发生这种情况。

一种更好、更高效的方法是跳过 Button 并创建您自己的 Image 子类,该子类显示一个或多个数字图像并自行管理触摸事件。

于 2012-10-18T20:25:37.293 回答