[转]关于9宫格方向(不是scrollRect)

http://uh.9ria.com/space-12147-do-blog-id-5690.html

[0,1,2,
3,4,5,
6,7,8]

9宫格是用数字来表示方向的一种办法,其意义就是
["leftup","up","rightup",
"left",null,"right",
"leftdown","down","rightdown"]
用相应的数字表达一种相对位置状态,要点需要4这个中间点,而且左上角是0

在表达相对位置的时候,这种方法最终会比较简洁,诸如:
判断左右:a % 3 < b % 3
判断上下:int(a / 3) < int(b / 3)
而不需要再写多个||

上面的可以说是将9宫格方式拆解成横纵两个方向的办法,更重要的是反向的做法
你只需要用下面的逻辑
(是左边 ? 0 : 是右边 ? 2 : 1) + (是上面 ? 0 : 是下面 ? 6 : 3)
就可以连写出一个表达式直接得出方向值,而不再需要写9个case


诸如,p是一个表示人物移动速度p(vx,vy)的Point坐标,labelNames是一个包含8方向(加上站立是9)的位图动画序列,每项是一个方向的序列,只需要用下面的代码就能直接取出当前应当显示的位图序列

var newState:Array = labelNames[
(p.x < -Math.abs(p.y / 2) ? 0 : p.x > Math.abs(p.y / 2) ? 2 : 1) +
(p.y < -Math.abs(p.x / 2) ? 0 : p.y > Math.abs(p.y / 2) ? 6 : 3)
];

所以表达方向值应当毫不犹豫的使用9宫格方式。

你可能感兴趣的:(html,Blog,UP)