关于锚点

锚点的这个问题困扰了我很久,刚才突然想通了

cocos2dx中,坐标原点位于画面的左下角,X轴水平向右递增,Y轴垂直向上递增。使用这种坐标系的原因,是因为cocos2dx是基于OpenGL3DAPI创建。

锚点:是向画面输出图像或者文本等对象的基准点。

引入锚点是因为我们所插入的精灵一般是一张图片,那么我们在对精灵设置坐标的时候,应该让精灵中的哪个点对准我们所设置的坐标呢?由此cocos2dx引入锚点的概念。

所以锚点可以说是我们向画面输出对象的基准点。

在cocos2dx中,默认的锚点是(0.5,0.5),当我们把锚点设置为(0,0)的时候,锚点位于对象的左下角,即对象的左下角会和我们设置的对象的坐标点重合。

如图,假设我们所设置的精灵为图上的矩形,精灵对象的位置为(100,100),锚点的位置为(0,0),则精灵对象的左下角就会和点(100,100)重合。


将锚点位置设置为(0,1)时,锚点位于精灵对象的左上角。即精灵对象的左上角会和点(100,100)重合。



将锚点设置为(1,1)时,精灵对象的右上角将和点(100,100)重合。


将锚点设置为(1,0)的时候,精灵对象的右下角将和点(100,100)重合。



上面把锚点设置在不同的位置,输出的图像不同,下面通过一个小例子来更加清晰的认识下锚点。

auto spr1 = Sprite::create("rectange.png");
spr1->setPosition(Point(600, 600));
this->addChild(spr1);

运行上述代码,显示如下效果图:



auto spr = Sprite::create("ball1.png");
spr->setAnchorPoint(Point(0,0));
spr->setPosition(Point(0,0));

        spr1->addChild(spr);

当把锚点设置为(0,0)的时候,精灵的左下角和(0,0)对准。


spr->setAnchorPoint(Point(0,1));
spr->setPosition(Point(0,0));
spr1->addChild(spr);

当把锚点位置设置为(0,1)的时候,精灵的左上角和(0,0)对准。



spr->setAnchorPoint(Point(1,1));
spr->setPosition(Point(0,0));
spr1->addChild(spr);

当把锚点位置设置为(1,1)的时候,精灵的右上角和(0,0)对准。


spr->setAnchorPoint(Point(1,0));
spr->setPosition(Point(0,0));
spr1->addChild(spr);

当把锚点位置设置为(1,0)的时候,精灵的右下角和(0,0)对准。


UniApp 是一个基于 Vue.js 的跨平台应用开发框架,可以同时构建 iOS、Android 和 Web 应用。关于导航,UniApp 提供了一个内置的组件 `uni-page-scroll`,用于实现页面内的导航。 使用 `uni-page-scroll` 组件,你需要在页面中设置多个,并在导航菜单中设置对应的链接。具体的步骤如下: 1. 在页面中设置:在需要跳转的位置标签上添加 `id` 属性,作为的标识。例如: ```html <!-- 页面内容 --> <div id="section1">Section 1</div> <div id="section2">Section 2</div> <div id="section3">Section 3</div> ``` 2. 在导航菜单中设置链接:使用 `<a>` 标签,并设置 `href` 属性为对应的标识。例如: ```html <!-- 导航菜单 --> <ul> <li><a href="#section1">Section 1</a></li> <li><a href="#section2">Section 2</a></li> <li><a href="#section3">Section 3</a></li> </ul> ``` 3. 在页面中使用 `uni-page-scroll` 组件:将 `uni-page-scroll` 组件放置在需要实现导航的位置,并设置 `scroll-into-view` 属性为当前显示的标识。例如: ```html <!-- 页面 --> <template> <view> <uni-page-scroll scroll-into-view="{{currentView}}"> <!-- 页面内容 --> <div id="section1">Section 1</div> <div id="section2">Section 2</div> <div id="section3">Section 3</div> </uni-page-scroll> </view> </template> <script> export default { data() { return { currentView: 'section1' // 默认显示第一个 } } } </script> ``` 通过以上步骤,你就可以实现 UniApp 中的导航了。当击导航菜单中的链接时,页面会滚动到对应的位置。希望对你有帮助!如果有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值