# 引擎下載地址 https://cocos2d-x.org/download/ 也可以在 github 下載 https://github.com/cocos2d/cocos2d-x/tags # 手冊地址 https://docs.cocos2d-x.org/cocos2d-x/v3/zh/ # ...
引擎下載地址
https://cocos2d-x.org/download/
也可以在 github 下載
https://github.com/cocos2d/cocos2d-x/tags
手冊地址
https://docs.cocos2d-x.org/cocos2d-x/v3/zh/
api 文檔地址
https://docs.cocos2d-x.org/api-ref/cplusplus/v3x/index.html
hello world
安裝註意事項
- 需要 python2 , 安裝後可以用 python2 的絕對路徑運行 cocos 的
setup.py
- 如何沒有把 python2 加入到環境變數, 可以修改引擎路徑下的
tools\cocos2d-console\bin\cocos.bat
@echo off
@python2 絕對路徑 "%~dp0/cocos.py" %*
新建項目
cocos new HelloCocos -p com.laolang.hellococos -l cpp
然後打開 proj.win32
目錄下的 .sln
文件, 提示升級點確認, 編譯運行即可
中文亂碼問題
參考:
Cocos2d-x 中文標題設置
Cocos2d-x 中文內容設置
標題直接用下麵的函數轉一下, Label
等內容的中文顯示還需要中文字體的支持, 可以從網上下載或者從C盤拷一個, 例如宋體常規, 此字體文件名為:simsun.ttc
std::string CommonUtil::GBKToUTF8(const std::string& strGBK)
{
std::string strOutUTF8 = "";
WCHAR* str1;
int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);
str1 = new WCHAR[n];
MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n);
n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);
char* str2 = new char[n];
WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL);
strOutUTF8 = str2;
delete[]str1;
str1 = NULL;
delete[]str2;
str2 = NULL;
return strOutUTF8;
}
hello world 關鍵代碼註釋
AppDelegate的applicationDidFinishLaunching方法
其四個方法含義分別為(https://blog.csdn.net/xiayao2012/article/details/49472423)
initGLContextAttrs();//設置 OpenGL環境
applicationDidFinishLaunching(); //邏輯初始化
applicationDidEnterBackground(); //切換到後臺
applicationWillEnterForeground(); //切換到前臺
bool AppDelegate::applicationDidFinishLaunching() {
// 初始化 director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
// 初始化 opengl 試圖
if(!glview) {
glview = GLViewImpl::createWithRect(CommonUtil::GBKToUTF8("第一個 Cocos2d-X 程式"), cocos2d::Rect(0, 0, resolutionSize.width, resolutionSize.height));
director->setOpenGLView(glview);
}
// 開啟左下角 FPS 狀態信息
director->setDisplayStats(true);
// 設置 FPS 為 60, 預設為 60
director->setAnimationInterval(1.0f / 60);
// 設置屏幕解析度
glview->setDesignResolutionSize(resolutionSize.width, resolutionSize.height, ResolutionPolicy::NO_BORDER);
register_all_packages();
// 創建 Hello World 場景, 對象的釋放交給 cocos2d-x 管理
auto scene = HelloWorld::createScene();
// 運行
director->runWithScene(scene);
return true;
}
HelloWorldScene的init方法
bool HelloWorld::init()
{
// 先執行父類的 init
if (!Scene::init())
{
return false;
}
// 獲得可視區域大小
const auto visibleSize = Director::getInstance()->getVisibleSize();
log("width:%f , height:%f", visibleSize.width, visibleSize.height);
// 獲得原點位置 左下角
const Vec2 origin = Director::getInstance()->getVisibleOrigin();
log("x:%f , y:%f", origin.x, origin.y);
// 關閉按鈕, 是一個 MenuItemImage, 表示一個菜單項
auto closeItem = MenuItemImage::create(
"CloseNormal.png", // 非選中狀態
"CloseSelected.png", // 選中狀態
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this) // 回調函數
);
// 按鈕位置, 視窗右下角
const float x = origin.x + visibleSize.width - closeItem->getContentSize().width / 2;
const float y = origin.y + closeItem->getContentSize().height / 2;
closeItem->setPosition(Vec2(x, y));
// 把菜單項添加到菜單中
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Vec2::ZERO);
// 菜單添加到當前層
this->addChild(menu, 1);
// Hello World 文本
const auto label = Label::createWithTTF(CommonUtil::GBKToUTF8("第一個程式"), CommonUtil::GetDefaultFontPath(), 24);
// 設置文本位置
label->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height - label->getContentSize().height));
// 文本添加到當前層
this->addChild(label, 1);
// 創建背景圖片
const auto sprite = Sprite::create("HelloWorld.png");
// 圖片位置
sprite->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
// 背景圖片添加到當前層
this->addChild(sprite, 0);
return true;
}
本文來自博客園,作者:laolang2016,轉載請註明原文鏈接:https://www.cnblogs.com/khlbat/p/17465004.html