Cocos2d-x游戏引擎开发[3]----建立锚点 (重建了一个类)

一般新建项目可以看到他是位于整个图形界面的中心,原因是他设置了一个锚点,相当于落脚点。


因此我需要重做一个类研究这个图像在界面中的位置摆放,主要是下面这个代码

spr->setAnchorPoint(ccp(0.656,0.5))
他是影响锚点的关键,再通过这个代码你可以自由缩放图像大小,是按比例的缩放的哦。
spr->setScale(5.0f)
我做的类(包含CPP,h)这样更能清晰的观察代码的结构。最终图像应该是这样的


中间的线是用了draw函数主要是为了方便自己观察微笑

具体代码大致是这样的.h

#ifndef __T01LayerAnchorPoint_H__
#define __T01LayerAnchorPoint_H__

#include "cocos2d.h"
USING_NS_CC;

class T01LayerAnchorPoint :public CCLayer
{
public:
	static T01LayerAnchorPoint * create();
	bool init();

	static CCScene * scene();

	void draw(Renderer* renderer, const Mat4 &transform, uint32_t flags);

	void mySchedule(float dt);
	CCSprite * spr;
};


#endif
下面是.cpp

#include "T01LayerAnchorPoint.h"



CCScene * T01LayerAnchorPoint::scene()
{
	CCScene * scene = CCScene::create();
	T01LayerAnchorPoint * layer = T01LayerAnchorPoint::create();
	scene->addChild(layer);
	return scene;
}
T01LayerAnchorPoint * T01LayerAnchorPoint::create()
{
	T01LayerAnchorPoint * pRet = new T01LayerAnchorPoint();
	if (pRet && pRet->init())
	{
		pRet->autorelease();
	}
	else
	{
		delete pRet;
		pRet = NULL;
	}
	return pRet;
}
bool T01LayerAnchorPoint::init()
{
	CCLayer::init();

	CCSize winSize = CCDirector::sharedDirector()->getWinSize();
	spr = CCSprite::create("anchor1.png");
	//spr->setAnchorPoint(ccp(0.656,0.5));
	spr->setScale(5.0f);
	spr->setPosition(ccp(winSize.width / 2, winSize.height / 2));
	addChild(spr);

	schedule(schedule_selector(T01LayerAnchorPoint::mySchedule), 2);

	return true;
}
void T01LayerAnchorPoint::draw(Renderer* renderer, const Mat4 &transform, uint32_t flags)
{
	CCSize winSize = CCDirector::sharedDirector()->getWinSize();
	ccDrawColor4B(255, 0, 0, 255);

	ccDrawLine(ccp(0, winSize.height / 2), ccp(winSize.width, winSize.height / 2));
	ccDrawLine(ccp(winSize.width / 2, 0), ccp(winSize.width / 2, winSize.height));
}

void  T01LayerAnchorPoint::mySchedule(float dt)
{
	static float ro = 0;
	ro += 30;
	spr->setRotation(ro);
}


大部分scene中锚点在中间的,但是大部分Layer是忽略锚点,因为我们要在这里面添加精灵等多种东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值