这适用于我为Android制作的游戏,而我想要做的是每次我绘制这些特定位图时,我希望颜色更改x量以显得更红与某个值相反。到目前为止,我设法做到这一点:
public void drawObstacle(Pixmap pixmap, int x, int y, float red){
mColorMatrix.setScale(1 + (0.0015833f * red), 1 - (0.004566f * red), 1 - (0.004566f * red), 1);
mObstaclePaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(pixmap.getBitmap(), x, y, mObstaclePaint);
}
有完美的结果。
然而,由于游戏的性质,该方法被调用了很多次,导致它明显滞后,我推测原因是每次创建新对象,我通过在代码中排除它来证明。我觉得这种滞后是由GC造成的。
我查看了API /源代码,发现ColorMatrix被复制到ColorMatrixColorFilter的构造函数中,因此我无法在实例化后对其进行更改,并且没有&似乎是以任何方式改变它的任何可行的方法。
我的问题是如何创造相同的效果,而不是每次都延迟/创建数十个新对象?