您的位置:首页 > Web前端 > Node.js

convertToWorldSpace与convertToNodeSpace

2014-06-09 18:14 489 查看
convertToWorldSpace用于将一个相对坐标转化为绝对坐标,convertToNodeSpace则是将一个绝对坐标转化为一个相对坐标。

这里的相对坐标指的是相对于某一个CCNode的坐标(CCNode左下角为0,向右向上为正),这里的绝对坐标是相对于屏幕的坐标(屏幕左下角为0,向右向上为正)。

下面结合一个例子进行理解。



如上图所示,Screen框代表屏幕大小,Sprite框为一个CCSprite实例的大小,Map框为一个大地图的大小。对应的情景是一张大地图,手机屏幕显示地图的一部分,屏幕上显示了一个精灵,Map,Scrren,Sprite三者的中心重合。

我们执行如下代码,分析结果(layer是的锚点(0,0),位置(0,0),所以layer的坐标系等同于Map)

print("mapNode:", layer:convertToNodeSpace(ccp(0,0)).x, layer:convertToNodeSpace(ccp(0,0)).y)
print("spriteNode:", sprite:convertToNodeSpace(ccp(0,0)).x, sprite:convertToNodeSpace(ccp(0,0)).y)
print("mapWorld:", layer:convertToWorldSpace(ccp(0,0)).x, layer:convertToWorldSpace(ccp(0,0)).y)
print("spriteWorld:", sprite:convertToWorldSpace(ccp(0,0)).x, sprite:convertToWorldSpace(ccp(0,0)).y)


输出结果为:
mapNode:	161	129
spriteNode:	-176	-96
mapWorld:	-161	-129
spriteWorld:	176	96


a) 第一行表示将相对于屏幕位置为(0,0)的坐标转化为相对于Map的坐标

相对于屏幕位置为(0,0)就是屏幕的左下角,而Map的相对坐标系以Map左下角为原点,向右向上为正,而屏幕左下角距离Map左下角横向距离161,纵向距离129,所以屏幕左下角相对于Map左下角的坐标为(161,129)

a) 第二行表示将相对于屏幕位置为(0,0)的坐标转化为相对于Sprite的坐标

相对于屏幕位置为(0,0)就是屏幕的左下角,而Sprite的相对坐标系以Sprite左下角为原点,向右向上为正,而屏幕左下角距离Sprite左下角横向距离176且在其左侧(负方向),纵向距离96且在其下方(负方向),所以屏幕左下角相对于Sprite左下角的坐标为(-176,-96)

c) 第三行表示将相对于Map位置为(0,0)的坐标转化为相对于屏幕的坐标

相对于Map位置为(0,0)就是Map的左下角,而屏幕的相对坐标系以屏幕左下角为原点,向右向上为正,而Map左下角距离屏幕左下角横向距离161且在其左侧(负方向),纵向距离129且在其下方(负方向),所以Map左下角相对于屏幕左下角的坐标为(-161,-129)

d) 第四行表示将相对于Sprite位置为(0,0)的坐标转化为相对于屏幕的坐标

相对于Sprite位置为(0,0)就是Sprite的左下角,而屏幕的相对坐标系以屏幕左下角为原点,向右向上为正,而Sprite左下角距离屏幕左下角横向距离176,纵向距离96,所以屏幕左下角相对于Map左下角的坐标为(176,96)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: