Coos2d-x网站:http://www.cocos2d-x.org/
Windows下开发,所以下载源码解压后先用build-win32.bat编译可执行文件,编译完后在HelloLua或者multi-platform-lua工程中修改一下C++源代码,不改也可以。
main.c:
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); #ifdef USE_WIN32_CONSOLE AllocConsole(); freopen("CONIN$", "r", stdin); freopen("CONOUT$", "w", stdout); freopen("CONOUT$", "w", stderr); #endif // create the application instance AppDelegate app; CCUserDefault* userDefault = CCUserDefault::sharedUserDefault(); //用于从XML文件读取用户配置 std::string viewName = userDefault->getStringForKey("viewName", "WinApp"); float viewWidth = userDefault->getFloatForKey("viewWidth", 480); float viewHeight = userDefault->getFloatForKey("viewHeight", 320); float zoomFactor = userDefault->getFloatForKey("zoomFactor", 1); CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setViewName(viewName.c_str()); eglView->setFrameSize(viewWidth, viewHeight); eglView->setFrameZoomFactor(zoomFactor); int ret = CCApplication::sharedApplication()->run(); #ifdef USE_WIN32_CONSOLE FreeConsole(); #endif return ret; }
修改了一些地方,将一些配置从xml文件中读取,免得以后对要他们修改还要重新编译:
CCUserDefault* userDefault = CCUserDefault::sharedUserDefault(); //用于从XML文件读取用户配置 std::string viewName = userDefault->getStringForKey("viewName", "WinApp"); float viewWidth = userDefault->getFloatForKey("viewWidth", 480); float viewHeight = userDefault->getFloatForKey("viewHeight", 320); float zoomFactor = userDefault->getFloatForKey("zoomFactor", 1); CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setViewName(viewName.c_str()); eglView->setFrameSize(viewWidth, viewHeight); eglView->setFrameZoomFactor(zoomFactor);
CCUserDefault会利用tinyxml2读写xml文件,从而保存或者读取我们所需要的基本类型数据。
这样也避免了转码操作。
在AppDelegate初始化时加载Lua文件,主要就改了一下路径:
std::string searchPath = _userDefault->getStringForKey("searchPath", "script"); std::string scriptName = _userDefault->getStringForKey("scriptName", "main.lua"); //std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("hello.lua"); CCFileUtils::sharedFileUtils()->addSearchPath(searchPath.c_str()); pEngine->executeScriptFile(scriptName.c_str());
这样启动时就去执行script/main.lua
编译后就不用管C++代码了,以后的lua代码修改后也不用再编译。
现在有了可执行文件,拷到没装VisualStudio的PC上也可以开发cocos了
下面写lua代码:
local function main() -- avoid memory leak collectgarbage("setpause", 100) collectgarbage("setstepmul", 5000) print(os.date()) --打印系统时间 local scene = CCScene:create() local layer = CCLayer:create() layer:setTouchEnabled(true) layer:registerScriptTouchHandler(function(eventType, x, y) --响应屏幕触摸事件 if eventType == "began" then print(eventType, x, y) return true elseif eventType == "ended" then print(eventType, x, y) end end) scene:addChild(layer) CCDirector:sharedDirector():setDisplayStats(true); CCDirector:sharedDirector():runWithScene(scene) end main()
debug程序通过print打印
参照LuaTest代码写一个小电子时钟程序
local function main() -- avoid memory leak collectgarbage("setpause", 100) collectgarbage("setstepmul", 5000) --获取定时任务队列 local scheduler = CCDirector:sharedDirector():getScheduler() --获取屏幕尺寸 local winSize = CCDirector:sharedDirector():getWinSize() --创建layer local layer = CCLayer:create() --获取位图字体 local bmpFontTime = CCLabelBMFont:create(os.date('%X'), "bitmapFontTest3.fnt") local bmpFontDate = CCLabelBMFont:create(os.date('%x'), "bitmapFontTest3.fnt") local bmpFontFast = CCLabelBMFont:create('0', "bitmapFontTest3.fnt") --设置坐标 bmpFontTime:setPosition(winSize.width / 2, winSize.height / 2) bmpFontDate:setPosition(winSize.width / 2, winSize.height / 2 + 48) bmpFontFast:setPosition(winSize.width / 2, winSize.height / 2 - 48) --添加到layer layer:addChild(bmpFontTime) layer:addChild(bmpFontDate) layer:addChild(bmpFontFast) --定时器响应函数 local function secondInterval(dt) print(dt, os.date('%X')) bmpFontTime:setString(os.date('%X')) bmpFontDate:setString(os.date('%x')) end --定时器响应函数 local interval = 0 local function fastInterval(dt) interval = interval+1 print(interval) bmpFontFast:setString(interval) end --设置定时任务 local schedulerEntry1 = nil local schedulerEntry2 = nil layer:registerScriptHandler(function(event) if event == "enter" then print('schedule enter') schedulerEntry1 = scheduler:scheduleScriptFunc(secondInterval, 1.0, false) schedulerEntry2 = scheduler:scheduleScriptFunc(fastInterval, 0.1, false) elseif event== "exit" then print('schedule exit') scheduler:unscheduleScriptEntry(schedulerEntry1) scheduler:unscheduleScriptEntry(schedulerEntry2) if CCDirector:sharedDirector():isPaused() then CCDirector:sharedDirector():resume() end end end) --响应屏幕触摸事件 layer:setTouchEnabled(true) layer:registerScriptTouchHandler(function(eventType, x, y) if eventType == "began" then print(eventType, x, y) return true elseif eventType == "ended" then print(eventType, x, y) CCDirector:sharedDirector():setDisplayStats(not CCDirector:sharedDirector():isDisplayStats()); end end) local scene = CCScene:create() scene:addChild(layer) CCDirector:sharedDirector():runWithScene(scene) end main()
新手。
相关推荐
《Cocos2d-x实战Lua卷》是一本深入探讨Cocos2d-x游戏开发与lua脚本结合使用的专业书籍。Cocos2d-x是一个开源的游戏引擎,广泛应用于2D游戏开发,而Lua则是一种轻量级的脚本语言,以其简洁易学、高效灵活的特点,常被...
Cocos2d-x是一款广泛使用的开源游戏开发框架,它支持多种语言,其中Lua以其轻量级、易学易用的特性,成为许多开发者首选的脚本语言。以下将详细阐述Cocos2d-x与Lua结合的核心编程知识点。 1. Lua简介:Lua是一种...
通过研究这个配套代码,你可以掌握Cocos2d-x和Lua的结合使用,从而提升你的游戏开发技能。记得实践是检验真理的唯一标准,动手操作和修改代码,将理论知识应用到实际项目中,是学习过程中不可或缺的部分。
总之,《Cocos2d-x实战 Lua卷》是一本非常适合希望使用Lua进行游戏开发的初学者和进阶读者的书籍。通过系统学习书中内容,不仅能够掌握必要的编程技能,还能培养解决实际问题的能力,对于未来的职业发展大有裨益。
通过《Cocos2d-x实战:Lua卷》这本书,你将能够从零开始,逐步掌握使用Cocos2d-x和Lua开发游戏的全过程,从而提升你的游戏开发技能,无论你是初学者还是有一定经验的开发者,都能从中获益良多。阅读PDF文件,跟随...
《Cocos2d-x实战:Lua卷》这本书主要介绍了如何利用Lua进行游戏开发,并且涵盖了从基础到高级的各种主题,对于希望使用Lua进行游戏开发的学习者来说是一本非常实用的指南。 #### 三、书籍内容概览 《Cocos2d-x实战...
Cocos2d-x基于C++,但也支持Lua和JavaScript,但本书主要关注C++的使用。C++作为一门强大的系统级编程语言,提供了面向对象的特性,使得游戏开发中的对象管理和性能优化更为高效。读者需要理解C++的基本语法、类与...
《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...
总的来说,Cocos2d-x 3.1是游戏开发者学习2D游戏开发的一个重要参考点,虽然它已经不是最新的版本,但其核心概念和机制在后续版本中仍然保持一致,是理解整个Cocos2d-x框架的基础。解压并研究“cocos2d-x-3.1”中的...
与完全使用Lua开发的引擎(如CoronaSDK)相比,cocos2d-x与Lua结合的方案具有更明显的性能优势。这意味着即便是在对性能要求较高的游戏场景中,开发者也能获得良好的表现。此外,cocos2d-x+Lua的方案扩展能力不受...
- **cocos2d-x**:这是一个跨平台的游戏开发框架,支持2D图形渲染,动画,物理引擎等功能,使用C++编写,提供lua接口。 2. **游戏结构** - **res**目录:包含了游戏的所有资源,如图片、音频、精灵表等。在lua中...
3. `lua`:Lua脚本文件夹,cocos2d-x支持使用Lua作为脚本语言,提供灵活的游戏逻辑实现。 4. `proj.android` / `proj.ios_mac`:针对不同平台的构建项目,用于编译和打包应用。 二、cocos2d-x基础组件 1. `Scene`...
总之,《cocos2d-x手机游戏开发》这本书会引导你逐步掌握利用cocos2d-x开发Android游戏的全过程,从基础概念到高级技术,助你成为一名熟练的cocos2d-x游戏开发者。通过阅读“COCOS2D-X手机游戏开发.pdf”这份资料,...
- 学习渲染流程:Cocos2d-x使用OpenGL作为渲染接口,初学者需要学习OpenGL基础以及Cocos2d-x中的渲染流程和优化技巧。 - 掌握事件处理:游戏中的事件处理是交互的核心,需要学习如何响应用户输入和处理游戏中各种...
《Cocos2d-x实战_Lua卷》是一本专注于Cocos2d-x游戏开发的实践指南,主要聚焦于使用Lua语言进行游戏编程。Cocos2d-x是一个开源的游戏引擎,广泛应用于2D游戏开发,因其跨平台性、性能优异以及丰富的社区支持而备受...
根据提供的文件信息,本文将重点围绕“Cocos2d-x实战++Lua卷”这一主题进行深入探讨,并结合描述部分给出的知识点,详细阐述Cocos2d-x与Lua在游戏开发中的应用。 ### Cocos2d-x简介 Cocos2d-x是一款开源的游戏引擎...