Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Cocos2d-x 3.2总结(二)Position和AnchorPoint的关系大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

当Cocos2d-x引擎需要绘图时,就需要Position和AnchorPoint等属性。例如:在创建一个Sprite时,要设置Sprite的Position,而我们常常没有设置AnchorPoint,这是因为精灵的AnchorPoint默认值为(0.5,0.5),其他节点的默认值为(0,0)。那Position和AnchorPoint之间究竟有什么关系呢?下面将逐一讲解。


第一步,我们要知道Cocos2d-x中绘图坐标系是以左下角为原点,向上为y轴正方向,向右为x轴正方向。如下图:

第二步,我们要了解AnchorPoint.x和AnchorPoint.y分别是相对于所绘图的最左边width和最下边height的比例,所以AnchorPoint.x和AnchorPoint.y只能在0~1之间取值。

第三步,我们要明确AnchorPoint.x的值是相对于矩形绘图最左边距离的比例,AnchorPoint.y的值是相对于矩形绘图下边距离的比例。如下图:

第四步,当我们设定了精灵的Position(a,b)时,精灵在屏幕上的绘制要参考AnchorPoint的值。这里要假设精灵的Position(a,b)是固定的,所以此时要AnchorPoint为中心来绘制图形。由于AnchorPoint的点和Position的点同一个点,不同的是AnchorPoint点的值是比例值,在第三步中有讲解。所以,绘制图形的思路就是在固定Position点上,根据AnchorPoint不同的比例值,上下左右移动图形来达到比例值,最终得出图形。注意移动x、y的比例分别是相对于最左边和最下边的。

第五步,我们根据AnchorPoint不同比例值给出具体的绘图,这里Position(a,b)是固定的。

1. AnchorPoint(0,0),由于x=0,y=0,那么点到最左边的距离比例为0,点到最下边的距离比例为0,即绘制点在图形的左下角。如下图:

在Cocos2d-x代码如代码1,绘制效果如效果1。为了使绘制的图形显示得更具体,我们设置Positon(400,100)。

代码1:

1
2
3
4
Sprite*testSprite=Sprite::create( "1.jpg" );
testSprite->setPosition(400,100);
testSprite->setAnchorPoint(Vec2(0,0));
this ->addChild(testSprite);

效果1:

2. AnchorPoint(0.5,0.5),那么点到最左边的距离比例为0.5,点到最下边的距离比例为0.5,即绘制点在图形的中心,如下图:

在Cocos2d-x代码如代码2,绘制效果如效果2。为了使绘制的图形显示得更具体,我们设置Positon(400,serif; font-size:14px"> 代码2:

);
testSprite->setAnchorPoint(Vec2(0.5,0.5));
效果2:

3. AnchorPoint(1,1),由于x=1,y=1,那么点到最左边的距离比例为1,点到最下边的距离比例为1,即绘制点在图形的右上角,如下图:

在Cocos2d-x代码如代码3,绘制效果如效果3。为了使绘制的图形显示得更具体,我们设置Positon(400,serif; font-size:14px"> 代码3:

testSprite->setAnchorPoint(Vec2(1,1));
效果3:

以上讲解了三种即特殊又普通的比例,相信大家看完后就可以理解Position和AnchorPoint的关系。其他AnchorPoint值的推理如上。

如果AnchorPoint值是固定,Position的值是变化的,其过程推理也如上。

在以上图文并茂的讲解中,Position和AnchorPoint的关系是不是很清晰地呈现在大家的眼前?

来源网址:http://www.cocoachina.com/bbs/read.php?tid=218293

大佬总结

以上是大佬教程为你收集整理的Cocos2d-x 3.2总结(二)Position和AnchorPoint的关系全部内容,希望文章能够帮你解决Cocos2d-x 3.2总结(二)Position和AnchorPoint的关系所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: