每次更改ColorMatrix而不必创建新的ColorMatrixColorFilter

时间:2016-09-01 05:17:41

标签: java android bitmap

这适用于我为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的构造函数中,因此我无法在实例化后对其进行更改,并且没有&似乎是以任何方式改变它的任何可行的方法。

我的问题是如何创造相同的效果,而不是每次都延迟/创建数十个新对象?

0 个答案:

没有答案
相关问题