什么是锚点(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中极为重要,它为概念类之间搭建了一座宏伟的桥梁.它的继承关系图如下: ...
随机推荐
- CSS让div背景透明
div背景透明样式: 样式代码: .alert{filter:alpha(opacity=100); /* IE */ -moz-opacity:1.0; /* Moz + FF */ opacity ...
- Javascript 模块模式
模块模式(Module Pattern)提供了一种代码封装的方式,可以优雅地创建非耦合的代码块. 它是利用即时函数为对象创建私有变量和特权方法.严格来说,Javascript中没有私有成员的概念,所有 ...
- Silverlight取得Session
首先Session是运行在服务器上的,而Silverlight运行在客户端.因此在Silverlight中使用SESSION的说法并不准确, 只因大家经常这样搜索才起这个名字. 有两种方法实现Silv ...
- Service(一)----->简单计算
xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- AMD平台下在Windows虚拟机中安装Mac10.8.6【Written By KillerLegend】
我的电脑CPU是AMD,以前在虚拟机中装过Windows操作系统,感觉很简单,这几天想体验一下苹果系统,未来也可能会从事Mac相关软件开发,于是从早上便兴致勃勃的开始了--于是悲剧也开始了,上网各种查 ...
- delphi 基础之二 面向对象概念初步
面向对象概念初步 •类自动生成 快捷键:ctrl+shift+c 1.类的定义 类是用户创建的数据类型,包括状态.表达式和一些操作.有3个组成部分,即字段.方法和属性.字段是类的内部数据变量,方法就是 ...
- 第五节:什么导致Finalize方法被调用
Finalize方法在垃圾回收结束时被调用,下面有5种事件会导致开始垃圾回收 1.第0代已满 第0代已满,垃圾回收会自动开始.该事件是目前导致Finalize方法被调用的最常见的一种方式,因为虽 ...
- Autofac的注入和web.config配合
public static void BuildMvcContainer() { var builder = new ContainerBuilder(); var assemblys = AppDo ...
- 【原创】小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载五(给按钮加图标)
在范例5-4所使用的导航栏中,已经为按钮加入了图标的样式,但是当时并没有介绍按钮的图标究竟是怎么一回事.下面截取范例5-4中导航栏部分的代码: <divdata-role="foote ...
- python基础学习笔记第二天 内建方法(s t r)
python的字符串内建函数 str.casefold()将字符串转换成小写,Unicode编码中凡是有对应的小写形式的,都会转换str.center()返回一个原字符串居中,并使用空格填充至长度 w ...