0
我正在使用自己的平鋪磚引擎,這個使用的是六角磚 - 但我認爲它與普通磚沒有多大差別。Scaling tile grid
我有巨大的x,y陣列的瓷磚,他們有他們的x,y座標在畫布上進行渲染,我只迭代應該在當前相機位置的畫布上可見的那些。
所以我堅持縮放和無法解決這個我自己的。 這裏是我的畫布上繪製的瓷磚代碼:
public function draw():Void{
clearCanvas(); //Clear canvas (bitmapData)
var _m:Matrix;
iterateTiles(function(_tile:HexTile):Void{ // loop every tile that is visible on screen
_m = new Matrix();
_m.translate(_tile.x + cameraPoint.x,_tile.y + cameraPoint.y);//Get pre calculated tile x,y and add camera x,y
_m.scale(matrixScale, matrixScale);
drawToCanvas(_tile,_m);//Send to draw tile on canvas using Matrix
},true);
}
這個工程很好,速度很快,但唯一的問題是它擴展從左上角的瓷磚(如常規的規模會的工作)
我的問題是如何將瓷磚轉換爲始終從中心縮放。所以如果在比例縮放之前10:10位於屏幕的中心,那麼在縮放之後它應該保持在那裏 。
是的,但這只是改變了每個瓷磚的寬度和高度的一半。這如何幫助縮放? – notmyrealname
通過將瓷磚位置向左/向上移動縮放寬度/高度的一半,每個瓷磚的中心總是位於_tile.x,_tile.y,即使瓷磚被縮放。這是你的目標,還是我誤解了這個問題? – bwroga
這是不同的。我需要將所有拼貼放在一起並放到一起,以便在縮放後保持10:10(或當時畫布中央的任何拼貼)。 我只能縮小比例,所以請保持中心位置10:10,以便將其偏移一些+ x + y值,我認爲這個值應該與「canvas」的尺寸和比例有關 – notmyrealname