內容介紹:
導演 -》 場景 -》 層 -》 精靈 Director Scene Layer Sprite 創建場景、層、精靈都是用::create(),靜態方法創建。 創建導演用: Director::getInstance(); Sprite 精靈是一個2D圖像,可以移動、旋轉、放大縮小、活動,還能進行其他變化。精靈(通過Sprite”類實現)還可以有其他精靈當作子類。當父類被轉變時,該父類下的所有子類也將被轉變。 獲得遊戲界面可見區域大小: Size visibleSize = Director::getInstance()->getVisibleSize(); 寬:visibleSize.width 高: visibleSize.height 【座標】 cocos2d遊戲中: 起點座標(x=0, y=0)位於左下角,這意味着屏幕位於 X軸從屏幕最左邊開始,由左向右漸增 Y軸座標從屏幕最下方開始,由下向上漸增。 錨點:ccp(0.5,0.5),0.5代表x,Y方向的一半,值位於0和1之間 由於每個類都繼承自CCNode(Cocos2d-x的最頂層類),所以每個類都會默認有anchorPoint屬性。 當我們在一個位置畫一個的對象的時候,Cocos2d-x會合並屬性位置和anchorPoint。當然,當旋轉一個對象時,Cocos2d-x會圍繞繞anchorPoint旋轉的 每個note節點的錨點默認都是0.5,0.5 setIsRelativeAnthorPoint(true);//設置座標以錨點算 Director::convertToGl(CCPoint);//轉成openGl座標 Director::convertToUl(CCPoint);//轉成屏幕的座標 【UI系統】 1.字體,標籤 LabelTTF *l = LabelTTF:create("Hello","宋體",30); l->setPosition(ccp(100,100));//設置字體位置 l->setString("Hello Cocos2dx");//設置字體內容 l->setColor(ccc3(255,0,0));//設置顏色 l->setScale(3.0f);//放大3倍 l->setRotation(45.f);//設置旋轉角度 LabelBMFont *f = LabelBMFont::create("test","fonts/bitmapFontTest.fnt") LabelAtlas 2.菜單(MenuItemFont、MenuItemLabel、MenuItemImage、MenuItemSprite、MenuItemToggle) auto pBtn = MenuItemFont::create("go back", CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));//函數聲明:void HelloWorld::menuCloseCallback(Ref* pSender) //或者寫成 auto pBtn = MenuItemFont::create("go back", [](Ref *ref ){MessageBox("","");}); Menu* pMenu = Menu::create(pBtn, NULL); pMenu->setPosition(CCPointZero); addChild(pMenu); LabelTTF * ttf = LabelTTF::create("Hello","宋體",40); //MenuItemLabel * ml = MenuItemLabel::create(ttf,[](Ref *ref){MessageBox("","");}); MenuItemLabel * ml = MenuItemLabel::create(ttf,CC_CALLBACK_1(HelloWorld::noButton,this)); Menu *m = Menu::create(ml,NULL); addChild(m); // auto item2 = MenuItemImage::create("CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(HelloWorld::noButton, this) ); auto item2 = MenuItemImage::create("CloseNormal.png", "CloseSelected.png", [](Ref *ref){MessageBox("","");}); Menu *m = Menu::create(item2,NULL); addChild(m); auto spriteNormal = Sprite::create(s_MenuItem, Rect(0,23*2,115,23)); auto spriteSelected = Sprite::create(s_MenuItem, Rect(0,23*1,115,23)); auto spriteDisabled = Sprite::create(s_MenuItem, Rect(0,23*0,115,23)); auto item1 = MenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, CC_CALLBACK_1(HelloWorld::noButton, this) ); auto item1 = MenuItemToggle::createWithCallback( CC_CALLBACK_1(HelloWorld::noButton, this), MenuItemFont::create( "On" ), MenuItemFont::create( "Off"), NULL ); Menu *m = Menu::create(item1,NULL); addChild(m); 3.進度條 4.計時器 【事件處理】 1、輸入框 TextFieldTTF *tf = TextFieldTTF::textFieldWithPlaceHolder("input","宋體",20); tf->setPosition(visibleSize.width/2,visibleSize.height/2); auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [tf](Touch *t,Event *e){ if(tf->getBoundingBox().containsPoint(t->getLocation())){ //監聽函數 tf->attachWithIME(); }else{ tf->detachWithIME(); } return false; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,tf); addChild(tf); 2、場景切換 LabelTTF *label = LabelTTF::create("Show next scene","Courlier",36); addChlid(label); label->setPosition(viibleSize.width/2,visibleSize.height/2); auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [label](Touch *t,Event *e){ if(label->getBoundingBox().containsPoint(t->getLocation())){ Director::getInstance()->replaceScene(ImageScene::createScene()); } return false; }; Director::getInstance()->getEventDispatcher()->addEventListenerWi thSceneGraphPriority(listener,label);