最近写代码需要用到缩放,而且是Layer的,但是发现怎么设置位置都是错误,于是决定研究下。

首先,基础代码,代码上不错特殊处理,没有锚点设置和缩放

class TestLayer : public Layer {

public:

    bool init();
CREATE_FUNC(TestLayer);
}; bool TestLayer::init()
{
if (!Layer::init()) {
return false;
} Sprite *dd = Sprite::create("item_gift1.png");
this->addChild(dd); this->setContentSize(Size(200, 200)); // 打印几个点参照用
LayerColor *lc1 = LayerColor::create(Color4B::RED, 10, 10);
lc1->setPosition(50, 0);
this->addChild(lc1, 9001); LayerColor *lc4 = LayerColor::create(Color4B::RED, 10, 10);
lc4->setPosition(100, 0);
this->addChild(lc4, 9001); LayerColor *lc2 = LayerColor::create(Color4B::RED, 10, 10);
lc2->setPosition(150, 0);
this->addChild(lc2, 9001); LayerColor *lc6 = LayerColor::create(Color4B::RED, 10, 10);
lc6->setPosition(200, 0);
this->addChild(lc6, 9001); LayerColor *lc3 = LayerColor::create(Color4B::RED, 10, 10);
lc3->setPosition(0, 50);
this->addChild(lc3, 9001); LayerColor *lc5 = LayerColor::create(Color4B::RED, 10, 10);
lc5->setPosition(0, 100);
this->addChild(lc5, 9001); LayerColor *lc7 = LayerColor::create(Color4B::RED, 10, 10);
lc7->setPosition(0, 150);
this->addChild(lc7, 9001); LayerColor *lc8 = LayerColor::create(Color4B::RED, 10, 10);
lc8->setPosition(0, 200);
this->addChild(lc8, 9001); return true;
}
    TestLayer *t = TestLayer::create();
t->setPosition(200, 200);
this->addChild(t, 9000);

代码运行结果:

可以看到,TestLayer被放置在了(200,200),锚点在(0,0)

下面对TestLayer进行缩放0.5

TestLayer *t = TestLayer::create();
t->setPosition(200, 200);
t->setScale(0.5f);

运行结果:

(黄线是截图时画的)

可以看到TestLayer缩放了50%,但是左下角没有在(200,200)

通过这个代码可以看出,Layer中的child是以(0,0)为锚点,但是在scale时,确实以(0.5,0.5)进行缩放。

这个地方感觉比较坑,为什么没有用统一的点呢?没有写过底层画图代码,哪位同学知道,希望给我一个答案。

那这个地方可不可以统一呢?

看代码:

this->_ignoreAnchorPointForPosition = false;
this->setAnchorPoint(Point(0, 0));

在TestLayer中增加上面代码,运行结果:

可以看到缩放和child位置锚点一致了。

cocos2dx,Layer锚点与scale缩放的更多相关文章

  1. css3 新特性(2D translate 移动,rotate 旋转 , scale 缩放)

    1.transform(转换)可以实现元素的位移,旋转,缩放等效果(可以简单理解为变形) 移动:translate            旋转:rotate          缩放:scale 2. ...

  2. 【转】cocos2d-x中锚点设置及定位方式

    http://blog.csdn.net/wayne5ning/article/details/8160506 说在前面:以下是基于cocos2d-2.0-x-2.0.3作的总结 问题 在cocos2 ...

  3. css3动画属性系列之transform细讲scale缩放

    下面我们从3个方面开始介绍: 1.scale(x,y) 对元素进行缩放 X表示水平方向缩放的倍数 | Y表示垂直方向的缩放倍数 Y是一个可选参数,没有设置的话,则表示X,Y两个方向的缩放倍数是一样的. ...

  4. cocos2d-x中锚点设置及定位方式

    问题 在cocos2d演示样例代码HelloCpp中,为什么要将CCMenu设置位置到CCPointZero,即使CCMenu的锚点是在(0.5, 0.5)? 回答 这是由于CCMenu没有使用锚点进 ...

  5. Cocos2d-x教程(26)-Cocos2d-x + Lua脚本实现大地图缩放功能

    欢迎增加 Cocos2d-x 交流群: 193411763 视频教程地址:http://www.tudou.com/programs/view/qRiOfppMghM/ 转载请注明原文出处:http: ...

  6. cocos2d-x AnchorPoint锚点

    锚点是定位和变换操作的一个重点.锚点我们能够看成用一根图钉将一张纸或者相片钉在墙上的那个点. 节点的位置是由我们设置的position和anchor point一起决定的. 值得一提的是,anchor ...

  7. css3 scale 缩放出现 1px 问题

    问题描述 先来一段html代码 <div class="container"> <div class="parent"> <div ...

  8. iTween Scale缩放

    void Start () { //键值对儿的形式保存iTween所用到的参数 Hashtable args = new Hashtable(); //放大的倍数 args.Add(, , )); / ...

  9. Cocos2d-x中锚点的介绍

    什么是锚点?  只需要记住一句话就可以,锚点就是你指定的那个坐标究竟是图像的哪个点,也就是你setPosition的坐标 eg: 新建工程:在HelloWorld中写上如下代码: CCSprite * ...

随机推荐

  1. 11-28\enum

    1.创建一个枚举对象,对象中4个属性video视频.book书----(这2个属性可以用数字表示). 2.创建一个class对象,对象中有2个属性,一个是id属性(自己设置),第二个属性是type类型 ...

  2. 计算机网络OSI模型

    一. 理想模型-OSI 7层模型 那么数据是如何传输的呢?看下图:上层的Header+DATA作为新的Data再次被封装,到达目的地后就像剥洋葱一样掐头(去尾)最终留下你所要传的数据. 各层功能详细阐 ...

  3. 破解第一个程序----分析APK文件

    反编译APK成功后,在outdir目录下会生成一系列目录与文件. smali:程序所有的反汇编代码: res:程序中所有的资源文件: 如何寻找突破口是分析程序的关键.错误提示一般是指引关键代码的风向标 ...

  4. Struts2 数据标签

    Struts 2 的数据标签主要用于操作页面上显示的数据.下面列出的是重要的数据标签: action标签: 此标记使开发人员能够直接从JSP页面调用动作指定动作的名称和一个可选的命名空间.标签的主体内 ...

  5. CentOS6.5升级NTP

    二.安装依赖包 yum -y install gcc libcap libcap-devel glibc-devel 三.升级Ntp 1.tar zxf /tmp/ntp-4.2.8p10.tar.g ...

  6. .NET进阶篇07-.NET和COM

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.COM和.NET元数据内存管理接口注册线程编组二..NET客户端调用COM组件三.COM客户端调用.NET组件四.嵌入互操作类型五 ...

  7. WebGPU学习(十一):学习两个优化:“reuse render command buffer”和“dynamic uniform buffer offset”

    大家好,本文介绍了"reuse render command buffer"和"dynamic uniform buffer offset"这两个优化,以及Ch ...

  8. Python简介及学习

    Python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 现在,全世界差不多有600多种编程语言,但流行的编程语 ...

  9. 洛谷$P5330\ [SNOI2019]$数论 数论

    正解:数论 解题报告: 传送门$QwQ$ ,,,这题还蛮妙的$QwQ$(,,,其实所有数论题对我来说都挺妙的$kk$然后我真的好呆昂我理解了好久$QAQ$ 考虑先建$Q$个点,编号为$[0,Q)$,表 ...

  10. BuilderPattern(建造者模式)-----Java/.Net

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式