最近写代码需要用到缩放,而且是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. 2018-6-15-win10-uwp-xaml-绑定接口

    title author date CreateTime categories win10 uwp xaml 绑定接口 lindexi 2018-6-15 21:7:19 +0800 2018-2-1 ...

  2. vue在html中写动态背景图片

    <div class="img" :style="`background: url(`+item.img+'?any_string_is_ok'+`)center ...

  3. 2018-11-17-win10-uwp-在-xaml-让-TextBlock-换行

    title author date CreateTime categories win10 uwp 在 xaml 让 TextBlock 换行 lindexi 2018-11-17 16:2:29 + ...

  4. SNOI2019

    题解: t1: 想了一会才会.. 以为是啥最小表示法之类的..然后这个我又不会 其实只要考虑一下a[i],a[i+1]之间的大小关系就行了 t2: 好像和题解不太一样.. 我的做法比较麻烦.. 枚举A ...

  5. Xgboost参数调节

    转自:https://segmentfault.com/a/1190000014040317 整体: # 1.调试n_estimators cv_params = {'n_estimators': [ ...

  6. Python - Tuple 怎么用,为什么有 tuple 这种设计?

    背景 看到有同学很执着的用 tuple,想起自己刚学 python 时,也是很喜欢 tuple,为啥?因为以前从来没见过这种样子的数据 (1,2), 感觉很特别,用起来也挺好用 i,j=(1,2), ...

  7. spring-redis-session 自定义 key 和过期时间

    对于分布式应用来说,最开始遇到的问题就是 session 的存储了,解决方案大致有如下几种 使用 spring-session 它可以把 session 存储到你想存储的位置,如 redis,mysq ...

  8. 优雅的使用BeanUtils对List集合的操作

    摘要 在业务员流程的时候,我们在Entity.Bo.Vo层数据间可能经常转换数据,Entity对应的是持久层数据结构(一般是数据库表的映射模型).Bo对应的是业务层操作的数据结构.Vo就是Contro ...

  9. CentOs7.X下配置FTP

    https://blog.csdn.net/cc_want/article/details/85337241 CentOS7.x自带firewall防火墙,FTP使用需要开启20 21 22 3000 ...

  10. HashMap 原理解析

    HashMap是由数组加链表的结合体.如下图: 图中可以看出HashMap底层就是一个数组结构,每个数组中又存储着链表(链表的引用) JDK1.6实现hashmap的方式是采用位桶(数组)+链表的方式 ...