91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cocos2dx 自學記錄(4)-- 寫一個自己的界面

發布時間:2020-03-20 10:57:31 來源:網絡 閱讀:648 作者:nemomojie 欄目:開發技術

1.像我這種初學者,都很難發現到底cocos2dx的代碼要寫去哪里,我也找了很久才發現是在你項目的Classes文件夾中。

我的: D:\cocos2d-x-2.2.3\projects\game1\Classes


2.里面有AppDelegate和HelloWorldScene


前者是整個游戲的入口,里面有3個函數,都有注釋說明的

applicationDidFinishLaunching() 加載完成后執行的

applicationDidEnterBackground() 程序被擱置時執行的,最小化之類的

applicationWillEnterForeground() 程序被恢復時執行的


后者是一個場景的實現,相當于地圖,

我們就是修改這個來寫自己的界面


3.在編寫代碼時候,多多查看API是必不可少的。

官網online的API文檔:http://www.cocos2d-x.org/reference/native-cpp/V2.2.3/index.html


4.打開HelloWorldScene.cpp來看看

原有一個label,一個中央圖片,一個退出按鈕


5.仿照原來的替換出自己的背景

cocos2dx 自學記錄(4)-- 寫一個自己的界面

我用的是這張,圖片的資源放在 D:\cocos2d-x-2.2.3\projects\game1\Resources

隨便改個名字,我的是 mainbg.png,記得權限

然后修改代碼

CCSprite* pSprite = CCSprite::create("mainbg.png");
CCSize bgsize = pSprite->getContentSize();
pSprite->setScale(visibleSize.height / bgsize.height);
pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

中間那句是我查出來的,可以得到精靈的大小(據說很多東西都要用到sprite精靈這東西)

原來我試了一張自己覺得比較大的圖片,發現好像cocos2dx會自己壓縮它,但大的它不會平鋪下來

所以我取了下它的大小和屏幕的大小,讓圖片拉伸一下(setScale),適應屏幕

然后ccp是什么呢,專業名詞叫 錨點 ,我也是查的,不過感覺就是它的中點,

而origin.x,origin.y目前也沒搞懂是什么,但涉及坐標的我都會把它加上。。這里就會把圖片居中,然后拉伸開來

另外,圖片的名字打錯會導致程序不能運行


6.有關坐標系,cocos2dx采用OpenGL,所以左下角是(0,0)


7.編寫 開始 - 退出 菜單

我把原來退出部分刪除了,然后加入了自己這部分

CCMenuItemFont::setFontSize(30);
CCMenuItemFont *start = CCMenuItemFont::create("Start",this,menu_selector(HelloWorld::menuCallBackStart));
start->setPosition(ccp(50,200));
CCMenuItemFont *exit = CCMenuItemFont::create("Exit",this,menu_selector(HelloWorld::menuCallBackClose));
exit->setPosition(ccp(50,100));
CCMenu *menu = CCMenu::create(start,exit,NULL);
menu->setPosition(CCPointZero);
this->addChild(menu,1);

具體API自己查看,大概就是先創建兩個菜單選項,然后每一個顯示的是什么(原來的是圖片),點擊后調用的是哪個函數;然后用一個菜單包含兩個選項,最后把菜單加入到layer里面。


ccp里面的坐標,是相對于其父節點的 錨點 的。

而看到addChild的第二個參數,查看API文檔發現時 zorder,zorder越大,它所在位置就越上面,也就是有覆蓋效果(我猜測),然后我一開始是寫 2 的,按下去之后沒有反應,改成 1 才行


8.添加對應的函數


void HelloWorld::menuCallBackStart(CCObject* pSender)
{
    //wait for next time
}
void HelloWorld::menuCallBackClose(CCObject* pSender)
{
    exit(0);
}

我之后還把中央的label改成了自己作者了,這個就不貼代碼了


9.最后編譯運行,效果圖

cocos2dx 自學記錄(4)-- 寫一個自己的界面

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

繁峙县| 万州区| 虞城县| 抚远县| 瑞丽市| 周口市| 彩票| 略阳县| 建湖县| 永年县| 双流县| 芦溪县| 墨竹工卡县| 临清市| 新和县| 郧西县| 镇巴县| 维西| 昌图县| 邓州市| 弥渡县| 敦煌市| 明星| 井陉县| 准格尔旗| 庆元县| 开原市| 集安市| 尼勒克县| 枣强县| 河西区| 临沧市| 丹凤县| 紫金县| 齐齐哈尔市| 天长市| 定结县| 兴国县| 察哈| 新密市| 合作市|