スケーリングされているスプライト (キャンバス) があります。キャンバスにはマスクがあります。問題は、単純なスケーリング ( scaleX=newScale; scaleY=newScale;
) が、マスクを超えてマスクの下のキャンバスの一部を占めることです。したがって、マスクの下のキャンバスのポイントが同じ場所に留まるように、スケーリング後にキャンバスを移動する必要があります。私は次のようなことをしようとしています:
var deltaScale = newScale / scale;
//w and h are width and height of mask
canvas.scaleX = newScale;
canvas.scaleY = newScale;
canvas.x += (canvas.x + w/2) - (canvas.x + w/2) / deltaScale;
canvas.y += (canvas.y + h/2) - (canvas.y + h/2) / deltaScale;
その後も中心点は同じ場所に留まりません。スケーリング後にキャンバスを移動する方法を誰かに教えてもらえますか?
PS:キャンバスの幅と高さが非常に大きい (25000 程度) 場合は、それが役に立ちます。
UPD:マスクを含むキャンバスがスプライトに追加され、マスクはその親スプライトと同じサイズにcanvas.x
なりcanvas.y
、負になります。