cocos2d-x multiplatform ================== [cocos2d-x][1] is a multi-platform 2D game engine in C++, based on [cocos2d-iphone][2] and licensed under MIT. Now this engine has been ported to WOPhone, iOS 4.1, Android 2.1 and higher, WindowsXP & Windows7. Multi Platform ------------- * [cocos2d-iphone-cpp][3]: tested on iPhone 3.2, 4.1 & 4.2 SDK * [cocos2d-android-ndk][4]: based on ndk-r4(crystax.net version) & ndk-r5, tested on Android 2.1, 2.2, 2.3 emulator, HTC G2, G3, G6, G7 device * [cocos2d-wophone][5]: well tested on WOPhone of ChinaUnicom, both emulator & device. * [cocos2d-win32][6]: well tested on WindowsXP & Windows7. It depends on PowerVR OpenGL ES 1.1 libraries for win32 system Document ------------------ * Website: [www.cocos2d-x.org][7] * [Online API References][8] Contact us ------------------ * Forum: [http://forum.cocos2d-x.org][9] * Twitter: [http://www.twitter.com/cocos2dx][10] * Sina mini-blog: [http://t.sina.com.cn/cocos2dx][11] [1]: http://www.cocos2d-x.org "cocos2d-x" [2]: http://www.cocos2d-iphone.org "cocos2d for iPhone" [3]: http://www.cocos2d-x.org/wiki/cocos2d-x/Cocos2d-iphone-cpp "cocos2d-iphone-cpp" [4]: http://www.cocos2d-x.org/wiki/cocos2d-x/Cocos2d-android-ndk "cocos2d-android-ndk" [5]: http://www.cocos2d-x.org/wiki/cocos2d-x/Cocos2d-wophone "cocos2d-wophone" [6]: http://www.cocos2d-x.org/wiki/cocos2d-x/Cocos2d-win32 "cocos2d-win32" [7]: http://www.cocos2d-x.org "www.cocos2d-x.org" [8]: http://www.cocos2d-x.org/embedded/cocos2d-x/classes.html "API References" [9]: http://forum.cocos2d-x.org "http://forum.cocos2d-x.org" [10]: http://www.twitter.com/cocos2dx "http://www.twitter.com/cocos2dx" [11]: http://t.sina.com.cn/cocos2dx "http://t.sina.com.cn/cocos2dx" Lua Support FIX Readme ------------------ * CCScheduler support local function * Support autorelease C++ object * When C++ object deleted, set Lua object userdata to nil * Add CCNode:setPosition(x, y), CCNode::getPosition(), huge performance boost * Remove needless class and functions from tolua++ .pkg files, improved performance * CCMenuItem support script function * CCScene script callback * CCLayer touch & multi-touches events handler **How to use:** -- use CCSchedule::scheduleScriptFunc() local scheduler = CCScheduler:sharedScheduler() local handle -- save script callback handle local frameCount = 0 local function onEnterFrame(dt) print("onEnterFrame:", frameCount, dt) frameCount = frameCount + 1 if frameCount >= 60 then -- remove script callback scheduler:unscheduleScriptFunc(handle) end end handle = scheduler:scheduleScriptFunc(onEnterFrame, 1.0 / 60, false) - - - -- use CCMenuItem:registerScriptHandler() local function onMenuItemTap(menuItemTag) print(menuItemTag) -- output "1" end local menuItem = CCMenuItemImage:itemFromNormalImage("button.png", "button.png") menuItem:registerScriptHandler(onMenuItemTap) local menu = CCMenu:node() menu:addChild(menuItem) menuItem:setTag(1) -- menuItemTag scene:addChild(menu) - - - -- use CCScene script callback local function newScene() local scene = CCScene:node() local function sceneEventHandler(isOnEnter) if isOnEnter then if scene.onEnter then scene:onEnter() end else if scene.onExit then scene:onExit() end scene:unregisterScriptEventsHandler() end end scene:registerScriptEventsHandler(sceneEventHandler) return scene end local myScene = newScene("MyScene") function myScene:onEnter() print("MyScene:onEnter()") end function myScene:onExit() print("MyScene:onExit()") end CCDirector:sharedDirector():runWithScene(myScene) - - - -- use CCLayer touch event handler local layer = CCLayer:node() local function onTouch(event, x, y) -- event: CCTOUCHBEGAN, CCTOUCHMOVED, CCTOUCHENDED, CCTOUCHCANCELLED print(event, x, y) if event == CCTOUCHBEGAN then return true end end layer:registerScriptTouchHandler(onTouch, false) - - - -- use CCLayer multi-touches event handler local layer = CCLayer:node() local function onTouches(event, points) -- event: CCTOUCHBEGAN, CCTOUCHMOVED, CCTOUCHENDED, CCTOUCHCANCELLED print(event) for i = 1, #points, 2 do print(string.format("x: 0.2f, y: 0.2f", points[i], points[i + 1])) end end layer:registerScriptTouchHandler(onTouches, true) **TODO:** * When C++ object deleted, remove Lua object userdata