什么是锚点(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中极为重要,它为概念类之间搭建了一座宏伟的桥梁.它的继承关系图如下: ...
随机推荐
- C# 类型转换 Dictionary转Model类
/// <summary> /// 把Model转换为DataRow /// </summary> /// <typeparam name="T"&g ...
- Python网络编码
#-*- coding:utf-8 -*- from SocketServer import ThreadingTCPServer, StreamRequestHandler import trace ...
- 第一部分 CLR基础:第2章 生成、打包、部署和管理应用程序及类型
2.1.NET Framework部署目标 Microsoft Windows多年来因不稳定和复杂而口碑不佳.造成的原因:1.应用程序都使用来自微软和厂商的动态链接库(dynamic-link lib ...
- DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部
private void dgvLoad_Scroll(object sender, ScrollEventArgs e) { if (e.ScrollOrientation == ScrollOri ...
- ASP.net UrlRewrite的防盗链功能
ASP.net中如何实现基于UrlRewrite的防盗链. ASP.net中最快实现UrlRewrite的方法这篇文章中说了如何做UrlRewrite,那只是一个最简单的应用 其实利用UrlRewri ...
- js 月历 时间函数 月份第一天 星期的判断
返回值为0-6,其中返回值0为星期天:如同,php中的日期函数一样判断.
- PHP上传图片如何防止图片木马?
segmentfault回答: http://segmentfault.com/q/1010000000507750 一. 其实识别图片木马是很困难的,可以在一张正常的图片里加入一句话木马. 但是只要 ...
- FileOutputSream
package cd.itcast.fileinputstream; import java.io.File; import java.io.FileNotFoundException; import ...
- gem
bundle gem xxxrake build gem push pkg/xxx.gem rake releaserake install
- ios第三方分享到qq、微信、人人网、微博总结
我们开发出来的APP通常要通过第三方分享到其他社交平台,如qq.微博微信 等.通过分享可以提高APP的传播效率,增加APP的曝光率,因此也算是APP功能 里的标配了吧.目前常用的第三方分享途径有qq. ...