CCNode節點類
CCNode節點類CCScene、CCLayer、CCSprite等類的基類,cocos2d-x框架中所有能夠繪製,或能夠容納可以繪製的對象的對象就是CCNode的子類。
CCNode特點:
1,每個節點都可以包含子節點。
2,節點包含有週期性回調方法。
3,可以執行動作。
4,含有大量屬性。
CCNode常用函數
節點相關:
addChild();
removeChildFromParent();
removeChild:();
getChildByTag();
動作
runAction();
stopAction();
stopAllActions();
stopActionByTag();
時間調度相關:
schedule();
scheduleUpdate();
unschedule();
CCNode常用屬性:
座標:
錨點:
縮放係數:
標籤:
二、座標與錨點;
座標 iOs平臺提供兩種標系,一種是屏幕座標系,另一種是openGL座標系。
cocos2d-引擎是基於OpenGL ES進行的圖形渲染,是三維座標系,所以當x、y軸映射到手機屏幕上時,其座標系原點屏幕左下角。
座標運算:
CCPointExtension.h文件爲我們提供了多種座標運算的方法;
ccpAdd(const CCpoint &v1,const CCPoint &v2); 將兩個座標相加。
ccpSub(const CCPoint &v1,const CCPoint %v2); 將兩相座標相減。
ccpDistance(const CCpoint &v1,const CCPoint &v2);計算兩點間的直線距離。
ccpLength(const CCPoint &point);計算點與原點的直線距離。
錨點:
簡單說就是一個節點相對於座標的參考點。
節點座標系;
1節點座標是指和某個特定節點相關聯的座標系。
2和GL座標系也是一致的,x軸向右,y軸向上,但原點在父節點的左下角。
世界座標系:
1世界座標系是所有座標體系的參考標準,“世界”即指的遊戲世界。
2世界座標系和GL座標系一致,原點在屏幕左下角,x軸向右,y軸向上。
座標系的轉換;
節點座標系轉換爲世界座標系
CCPoint convertToWordSpace(const CCPoint &nodePoint);
世界座標系轉換爲節點座標系;
CCPoint convertToNodeSpace(const CCPoint worldPoint);
點.h文件
void update(float dt);
void myUpdate(float dt);
點.cpp文件
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
CCSprite *spr=CCSprite::create("Icon.png");
spr->setPosition(ccp(100, 300));
this->addChild(spr,0,1);//第二個參數是z軸的位置,第三個參數是個標籤。
////3代表調用3次,1.0f代表第一次調用等多長時間,調用一次是0.5秒,1.0是中間間隔的時間。
schedule(schedule_selector(HelloWorld::myUpdate), 0.5f, 3, 1.0f);
scheduleUpdate();
return true;
}
void HelloWorld::myUpdate(float dt)
{
//this是層的對象。
//getChildByTag(1)通過標籤得到節點。
CCSprite *spr=(CCSprite*)this->getChildByTag(1);
spr->setPosition(ccpAdd(spr->getPosition(), ccp(10, 0)));//getPosition() 精靈的當前位置。x+10.
}
void HelloWorld::update(float dt)
{
CCSprite *spr=(CCSprite*)this->getChildByTag(1);
spr->setPosition(ccpAdd(spr->getPosition(), ccp(1, 0)));
}