mirror of https://github.com/axmolengine/axmol.git
152 lines
4.6 KiB
Markdown
152 lines
4.6 KiB
Markdown
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
|