Java中游戏结束_如何避免Java游戏中的垃圾收集延迟?(最佳实践)[结束]

如果你不想按照建议预先呈现文本,

drawText

接受任何

CharSequence

这意味着我们可以自己巧妙地实现它:

final class PrefixedInt implements CharSequence {

private final int prefixLen;

private final StringBuilder buf;

private int value;

public PrefixedInt(String prefix) {

this.prefixLen = prefix.length();

this.buf = new StringBuilder(prefix);

}

private boolean hasValue(){

return buf.length() > prefixLen;

}

public void setValue(int value){

if (hasValue() && this.value == value)

return; // no change

this.value = value;

buf.setLength(prefixLen);

buf.append(value);

}

// TODO: Implement all CharSequence methods (including

// toString() for prudence) by delegating to buf

}

// Usage:

private final PrefixedInt scoreText = new PrefixedInt("Your score is: ");

...

scoreText.setValue(Score.points);

canvas.drawText(scoreText, 0, scoreText.length(), x, y, paint);

现在画分数不会导致任何分配(除了开始时可能有一次或两次

buf

的内部数组可能必须增长,以及

拖曳文字

到了)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值