什么是锚点(AnchorPoint)
1.锚点通常是图形的几何中心,
AnchorPoint(x,y)的两个参量x和y的取值通常都是0到1之间的实数,表示锚点相对于节点长宽的位置。
例如,把节点左下角作为锚点,值为(0,0);
把节点的中心作为锚点,值为(0.5,0.5);
把节点右下角作为锚点,值为(1,0)。
精灵的AnchorPoint默认值为(0.5,0.5),其他节点的默认值为(0,0),如CCLayer。
相关的操作:setAnchorpoint(0,0);
影响: 1.挂载位置, 2.缩放, 3.旋转
2.忽略锚点:
spr->ignoreAnchorPointForPosition(true);
对于CCLayer默认是忽略锚点的,忽略锚点则锚点位置在(0,0)
注意:忽略锚点,锚点位置不在几何中心,而在原点
myAnchorPoint.h
#pragma once
#include "cocos2d.h"
USING_NS_CC; class MyAnchorPoint:public CCLayer
{
public:
static CCScene * scene();
static MyAnchorPoint *create();
bool init(); /*原始绘图*/
void draw(); /*屏幕尺寸的大小*/
CCSize winSize; };
myAnchorPoint.cpp
#include "MyAnchorPoint.h" /*创建一个场景*/
CCScene * MyAnchorPoint::scene()
{
CCScene * scene = CCScene::create();
MyAnchorPoint * layer = MyAnchorPoint::create();
/*获取默认情况下的位置,即锚点的位置所在*/
CCLog("x=%g,y=%g", layer->getPositionX(), layer->getPositionY()); /*CCLayer是默认忽略锚点的*/
layer->ignoreAnchorPointForPosition(false); scene->addChild(layer);
return scene;
} /*创建一个图层*/
MyAnchorPoint *MyAnchorPoint::create()
{
MyAnchorPoint * pRet = new MyAnchorPoint();
if (pRet && pRet->init())
{
pRet->autorelease();
}
else
{
delete pRet;
pRet = NULL;
}
return pRet;
} /*初始化图层*/
bool MyAnchorPoint::init()
{
/*先初始化父类*/
CCLayer::init();
/*获取屏幕尺寸的大小*/
winSize = CCDirector::sharedDirector()->getWinSize(); /*创建一个精灵,测试锚点对挂载位置的影响*/
//CCSprite *spr = CCSprite::create("anchor3.png"); /*创建一个精灵,测试锚点对缩放的影响*/
/*CCSprite *spr = CCSprite::create("anchor1.png");
spr->setScale(2.0f);*/ /*创建一个精灵,测试锚点对旋转的影响*/
CCSprite *spr = CCSprite::create("anchor2.png");
/*以锚点为支点旋转30度*/
//spr->setRotation(30.0f); /*开启忽略锚点,测试忽略锚点对精灵的影响*/
spr->ignoreAnchorPointForPosition(true); /*设置精灵的位置*/
spr->setPosition(ccp(winSize.width/, winSize.height/)); /*设置锚点不同,挂载位置则不同,默认锚点是在几何中心*/
//spr->setAnchorPoint(ccp(0, 0));
//spr->setAnchorPoint(ccp(0, 1));
/*spr->setAnchorPoint(ccp(1, 0));
spr->setAnchorPoint(ccp(1, 1));*/ /*将精灵添加进图层*/
this->addChild(spr); return true; } void MyAnchorPoint::draw()
{
/*设置绘图的颜色,默认为白色*/
ccDrawColor4B(, , , ); /*画线*/
ccDrawLine(ccp(, winSize.height / ), ccp(winSize.width,winSize.height/));
ccDrawColor4B(, , , );
ccDrawLine(ccp(winSize.width/, ), ccp(winSize.width/, winSize.height)); }
什么是锚点(AnchorPoint)的更多相关文章
- 关于锚点(anchorPoint)的一些理解
默认来说,锚点位于图层的中点.对锚点一直不太了解是怎么移动的,有时候搞明白过不久碰到了又是懵逼,这次专门记录下来自己的一些理解,有不对的也请指教一下.就用下张图来简单的说明,每个视图的左上角锚点位置为 ...
- 彻底理解position与anchorPoint
引言 相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置?CALayer的position点是哪一点呢?anchorPoint与positio ...
- iOS开发——使用OC篇&frame,bounds,center,position,anchorPoint总结
frame,bounds,center,position,anchorPoint总结 图层的 position 属性是一个 CGPoint 的值,它指定图层相当于它父图层的位置, 该值基于父图层的坐标 ...
- position与anchorPoint
相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置?CALayer的position点是哪一点呢?anchorPoint与position有什 ...
- 彻底理解position与anchorPoint - Wonderffee's Blog(转)
引言 相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置?CALayer的position点是哪一点呢?anchorPoint与positio ...
- Position & anchorPoint 深入
引言 相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置?CALayer的position点是哪一点呢?anchorPoint与positio ...
- ios开发图层layer与核心动画二:CATransform3D,CAlayear和UIView区别,layer的position和anchorpoint
一:CATransform3D #import "ViewController.h" @interface ViewController () @property (weak, n ...
- Cocos2d-x 3.2 学习笔记(五)Sprite Node
游戏中最重要的元素Sprite精灵,关于精灵的创建,精灵的控制等等. 涉及到的类Class: AnimationFrame 动画帧. Animation 动画对象:一个用来在精灵对象上表现动画的动画对 ...
- [原创]cocos2d-x研习录-第二阶 概念类之节点类(CCNode)
节点类CCNode在基本概念中并不存在,它是为了建立基本概念之间的关联关系而抽象出来的中间辅助类.这个类在Cocos2D-x中极为重要,它为概念类之间搭建了一座宏伟的桥梁.它的继承关系图如下: ...
随机推荐
- SQL Server 修复数据库 相关 脚本 之 DBCC CHECKDB 用法 来自同事分享
DBCC CHECKDB 用法详解, 手工修复数据库 1. 快速修复 DBCC CHECKDB ('数据库名',REPAIR_FAST) 2.重建索引并修复 DBCC CHECKDB ('数据库名', ...
- SecondaryNamenode配置与NameNode故障恢复
一.配置 1. 在masters文件中添加 Secondary节点的主机名. *注:masters文件用于指定secondary的主机而不是namenode,slaves用于指定datanode和ta ...
- javaSE第十天
第十天 57 1. 形式参数和返回值的问题(理解) 57 (1)形式参数: 57 (2)返回值类型: 57 (3)链式编程 57 2. 包(理解) 57 (1)其实 ...
- android从资源文件中读取文件流显示
在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样:代码区: private void doRaw(){ InputStream is = this ...
- win7如何设置某个软件不弹出用户账户控制
手动修改注册表: 在 HKEY_CURRENT_USERS\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 键下面 ...
- 几个较好的SQL速查手册网址
微软 SQL server 数据库开发手册 数据库设计 Transact-SQL 速查手册 数据库设计 MySQL 中文参考手册速查 结构化查询语言 SQL 学习手册速查 转自:http://www. ...
- jQuery cookie插件保存用户登陆信息
通过jquery cookie插件保存用户登录信息. 代码: <html> <head> <title>cookies.html</title> ...
- 关于js中立即执行的匿名函数写法
/*最流行的写法*/ (function() { alert("run!") })(); /* !号可以有1~正无穷个,所以这一种就可以衍生无数种方式 */ !!!(functio ...
- Python学习教程(learning Python)--2.3.1 Python传参函数设计
本节主要讨论设计传递多个参数子函数的设计方法. 在2.3节里我们讨论了如何自己设计一个带参数的子函数的设计方法,现在我们研究一下如何传递两个及以上参数的设计方法. 函数为何要带参数呢?其实原因很简单, ...
- WPF Event 在 Command 中的应用初级篇,支持所有Event 展示松耦合设计的全部代码 - 解决TextBoxBase.TextChanged或者TextBox.TextChanged等类似事件绑定问题。
做过WPF开发的人,都知道做MVVM架构,最麻烦的是Event的绑定,因为Event是不能被绑定的,同时现有的条件下,命令是无法替代Event.而在开发过程中无法避免Event事件,这样MVVM的架构 ...