1. 程式人生 > >Cocos2d-x遊戲引擎開發[3]----建立錨點 (重建了一個類)

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是忽略錨點,因為我們要在這裡面新增精靈等多種東西。