【发布时间】:2012-12-22 08:11:06
【问题描述】:
我正在开发自己的 tile bliting 引擎,这个引擎使用的是六边形 tile - 但我认为它与常规 tile 没有太大区别。
我有巨大的 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);
}
这很好用而且速度很快,但唯一的问题是它从左上角缩放图块(就像常规缩放一样)
我的问题是如何将图块转换为始终从中心缩放。因此,如果 tile 10:10 在缩放之前位于屏幕中心,那么它应该 缩放后留在那里。
【问题讨论】:
标签: actionscript-3 matrix grid scaling tile