什么是锚点(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中极为重要,它为概念类之间搭建了一座宏伟的桥梁.它的继承关系图如下: ...
随机推荐
- hbase查询,scan详解
一.shell 查询 hbase 查询相当简单,提供了get和scan两种方式,也不存在多表联合查询的问题.复杂查询需通过hive创建相应外部表,用sql语句自动生成mapreduce进行.但是这种简 ...
- 在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境
阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...
- Hadoop安装(Ubuntu Kylin 14.04)
安装环境:ubuntu kylin 14.04 haoop-1.2.1 hadoop下载地址:http://apache.mesi.com.ar/hadoop/common/hadoop-1. ...
- The given path's format is not supported.
问题 编程以来今本没有使用input[type=file]这个控件过,今天突然使用尽然报错了,在本地chrome,firefox等其他的浏览器都是好的,唯独ie报错了.在服务器的时候,尽然chrome ...
- JS正则表达式使用方法及示例
1.定义正则表达式: a.普通方式:var reg=/表达式/附加参数 附件参数: g:代表可以进行全局匹配.i:代表不区分大小写匹配.m:代表可以进行多行匹配. 上面三个参数,可以任意组合,代表复合 ...
- PHP empty函数报错的解决办法
PHP empty函数在检测一个非变量情况下报错的解决办法. PHP开发时,当你使用empty检查一个函数返回的结果时会报错:Fatal error: Can't use function retur ...
- tp框架集成支付宝,中转页变成gbk编码
tp框架中集成支付宝的功能,将支付宝的demo例子存在到下图位置\Extend\Vendor\Alipay 生成支付订单 /** * 支付订单 */ public function pay() { h ...
- Hao123这个流氓
Author:KillerLegend Date:2014.2.27 From:http://www.cnblogs.com/killerlegend/p/3572591.html Hao123真让人 ...
- delphi中的ClientDataSet组件的open和Execute方法各自在什么情况下用?
ClientDataSet组件本来是给midas用的,也是所谓的borland的三层数据技术,使用这个控件必须发行midas.dll挺麻烦的 open是通过应用的SQL语句为SELECTexecute ...
- C# 标准查询表达式
一.标准查询运算符 1.C#提供了标准查询运算符,例如我想选择专利一系列(pantents)中以年份19开头的专利,可以用如下语句: IEnumerable<Patent> pantent ...