Table of Contents generated with DocToc
- Android 2.3 及以上
- iOS 5.0 及以上
- OS X 10.7 及以上
- Windows 7 及以上
- Windows Phone 8.1
- Windows 10 UWP
- Linux Ubuntu 14.04 及以上
- 现代浏览器和 IE 9+ (移动平台只有 iOS 和 Andorid 5.0 支持 WebGL)
- Xcode 5.1 及以上 (for iOS or Mac)
- gcc 4.9 及以上 (for Linux)
- ndk-r10c (for Android)
- Visual Studio 2013 及以上 (for Windows (win32))
- Visual Studio 2013 update4 及以(for Windows 8.1 universal Apps)
- Visual Studio 2015 及以上和 Windows 10.0 (build 10074 及以上)( for Windows 10.0 UWP Apps)
在大部分平台上,你可以使用 Cocos Console 命令行工具来运行测试例。
在控制台里:
// 进入 cpp test 文件夹
cd tests/cpp-tests
// 或者进入 js test 文件夹
cd tests/js-tests
// 或者进入 lua test 文件夹
cd tests/lua-tests
// 编译或者运行测试例
cocos compile -p ios|mac|android|win32|win8_1|metro|web -m debug|release
cocos run -p ios|mac|android|win32|win8_1|metro|web -m debug|release
举个例子,如果你想要在 Android 平台上以发布模式运行 cpp test,你可以使用如下命令:
cocos run -p android -m release
- 进入
cocos2d-x/build
文件夹, 打开cocos2d_test.xcodeproj
或者cocos2d_js_tests.xcodeproj
(JS 测试例,我们将会在v3.8合并这两个项目) - 在 Xcode 的 scheme toolbar 选择
iOS
或者OS X
平台 - 点击
run
按钮
你可以运行一下示例...
使用命令行:
$ cd cocos2d-x
$ ./setup.py
$ cd build
$ ./android-build.py cpp-empty-test -p 10
$ adb install cocos2d-x/tests/cpp-empty-test/proj.android/bin/CppEmptyTest-debug.apk
然后点击安卓设备上的程序运行测试例,-p
指定了 Android API 等级,cocos2d-x 支持 level10 以上。
使用 Eclipse:
$ cd cocos2d-x
$ ./setup.py
$ cd build
$ ./android-build.py cpp-empty-test -p 10
然后
- 把 cocos2d-x Android 项目导入 Eclipse 中,导入的路径是
cocos/platform/android
- 把
cpp-empty-test
Android 项目导入 Eclipse 中,导入的路径是tests/cpp-empty-test/proj.android
- 编译
cpp-empty-test
Android 项目,然后运行即可
- 对 win32 项目, 进入
cocos2d-x/build
目录, 然后打开cocos2d-win32.sln
或者cocos2d-js-win32.sln
- 对 win8.1 项目, 进入
cocos2d-x/build
目录, 然后打开cocos2d-win8.1-universal.sln
或者cocos2d-js-win8.1-universal.sln
- 选择运行目标
- 点击运行按钮
$ cd cocos2d-x/build
$ ./install-deps-linux.sh
$ cd ../..
然后
$ mkdir build
$ cd build
$ cmake ../cocos2d-x
$ make -j4
运行
$ cd bin/cpp-empty-test
$ ./cpp-empty-test
使用 Cocos Console 来创建一个新游戏:
cocos new -l cpp|js|lua MyGame
很高兴宣布 Cocos2d-x v3.10 正式版发布,以下是新特性,优化点以及 API 变更。
- 提供了一个统一的 Cocos2d-x 和 Cocos 的 setup 程序,方便用于更新最新的 Cocos2d-x 正式版,这同时包含了预编译库和源码,GitHub 源码同样有效,但是源码中不再有
.zip
文件了。 - 新的 Cocos Launcher 工具! Cocos Launcher 可以:
- 使用引擎一步创建新项目,可以使用源码或者预编译库。
- 更方便集成 SDKBOX,以便使用 Facebook, IAP 和其他第三方服务。
- 开发者可以提供反馈,并获取支持,这个功能被内置于 Cocos Launcher ,方便和引擎组取得联系,获取帮助。
- UI 系统
- 重新实现了
Scale9Sprite
,既提高了性能,又降低了内存消耗。 - 修改
PageView
继承至ListView
,PageView
可以作为一个控件被添加。 - 为
Label
添加新的类型,CLAMP,SHRINK, RESIZE_HEIGHT。 - 修复了
ClippingNode
作为子节点时表现异常。
- 优化了 JavaScript Bindings**,依据 SpiderMonkey GC best practices 使之更健壮。
-
重新实现了
Scale9Sprite
,既提高了性能,又降低了内存消耗。重新实现了 ui::Scale9Sprite,现在 slice sprite 使用 16 个顶点和 54 个索引,而不是 9 个 sprite,内存消耗比之前的实现更低了,性能也更高了。
在 SIMPLE 模式下, 4 条变都是 0,整个sprite会被水平/垂直缩放,在这种模式下,只渲染了一个四边形,比如:
auto blocks = ui::Scale9Sprite::createWithSpriteFrameName("blocks9c.png"); //When setting to SIMPLE, only 4 vertexes is used to rendering. blocks->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
在 SLICE 模式下,它将使用 18 个 三角形来渲染 slice 9 sprite,如果 4 条边都是 0, 仍然有 18 个三角形需要计算。所以请慎重选择你的渲染类型,比如:
auto sprite = ui::Scale9Sprite::createWithSpriteFrameName("blocks9c.png"); //When setting to SLICE, 16 vertexes will be used to rendering. sprite->setRenderingType(Scale9Sprite::RenderingType::SLICE);
-
修改
PageView
继承至ListView
,PageView
可以作为一个控件被添加。PageView 之前从 Layout 继承,主要实现了滚动和排列。但是这些特性在 ListView 中已经被实现了。所以移除了 PageView 这些重复的实现,并让它继承至 ListView。
随之而来的,是 PageView 变的更简单,更易用,更好维护,因为考虑了页实现。比如:
// Create the page view Size size(240, 130); PageView* pageView = PageView::create(); pageView->setDirection(PageView::Direction::HORIZONTAL); pageView->setContentSize(size); Size backgroundSize = background->getContentSize(); //"removeAllPages" is changed to "removeAllItems" pageView->removeAllItems(); pageView->setIndicatorEnabled(true); int pageCount = 4; for (int i = 0; i < pageCount; ++i) { Layout* layout = Layout::create(); layout->setContentSize(size); ImageView* imageView = ImageView::create("cocosui/scrollviewbg.png"); imageView->setScale9Enabled(true); imageView->setContentSize(size); imageView->setPosition(Vec2(layout->getContentSize().width / 2.0f, layout->getContentSize().height / 2.0f)); layout->addChild(imageView); Text* label = Text::create(StringUtils::format("page %d",(i+1)), "fonts/Marker Felt.ttf", 30); label->setColor(Color3B(192, 192, 192)); label->setPosition(Vec2(layout->getContentSize().width / 2.0f, layout->getContentSize().height / 2.0f)); layout->addChild(label); //"insertPage" is changed to "insertCustomItem" pageView->insertCustomItem(layout, i); } //"removePageAtIndex" is changed to "removeItem" pageView->removeItem(0); //"scrollToPage" is changed to "scrollToItem" pageView->scrollToItem(pageCount - 2);
更多细节请参考:tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp。
-
为
Label
添加新的类型,CLAMP,SHRINK, RESIZE_HEIGHT。Overflow 类型用以控制文本显示结果,在 SHRINK 模式下, 字体大小会被动态调整以适应 content 尺寸。在 CLAMP 模式下,文本内容超出显示框,会被截断。在 RESIZE_HEIGHT 模式下,你只能修改文本的宽,而高会被自动适应。比如:
//Change the label's Overflow type label->setOverflow(Label::Overflow::RESIZE_HEIGHT);
更多使用细节请参考:tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp。
局限:
目前只有 TTF 和 BMFONT 支持所有的类型,CharMap 支持所有的类型,除了 SHRINK。因为我们不能计算字体尺寸。系统字体只支持 Overflow::Normal 和 Overflow::RESIZE_HEIGHT。
[NEW] RichText supported new line element.
[NEW] UIText::clone supports clone the text effect.
[NEW] UI: Added methods to query label effect state.
[REFINE] IOS: Added virtual keyword for some render related function.
[REFINE] UI: Fixed boring deprecated warning in HttpRequest.
[REFINE] Network: Fixed Downloader bug on iOS & Android platform.
[REFINE] Studio: Fixed deprecation warning in SkeletonRenderer.
[REFINE] JS: Added js test case for fix, improve template.
[REFINE] Network: Permit http access to cocos2d-x.org in test projects on iOS.
[REFINE] Network: Crash when removing a remotely downloaded image from texture cache in js-binding.
[REFINE] Win10: WinRT project update version to v3.10.
[REFINE] Console: Added quiet option for Cocos Toolkit.
[REFINE] JS: New GC model for js-binding.
[REFINE] Doc: Fixed typos in documentation and comments.
[REFINE] UI: Updated controlButton size calculate with new Scale9Sprite logic.
[REFINE] Win10: Added missing _USRJSSTATIC preprocessor define for ARM builds.
[REFINE] JS: Added ccvector_to / ccmap_to converted to new js-binding API.
[REFINE] UI: Slider misprint fix.
[FIX] Core: Fixed premultiplyAlpha for mipmaps and compressed textures.
[FIX] UI: Fixed Scale9sprite rendering error when content size smaller than the sum of leftInset and rightInset.
[FIX] Win32: Fixed EditBox crash when removing an EditBox in a scheduler.
[FIX] Android: Fixed cannot add view to mFrameLayout when extends Cocos2dxActivity.
[FIX] 2D: Fixed actionNode set at wrong position bug.
[FIX] 3D: Fixed the movement of PUParticle lags one frame.
[FIX] UI: Fixed the wront argument of setPlaceholderFontName in EditBox.
[FIX] UI: Fixed EditBox editBoxEditingDidEnd may use the original text after change the text of EditBox in user script.
[FIX] Audio: Fixed FinishCallback
never be called in Windows.
[FIX] UI: Fixed Layout stencil clipping nested with Clipping Node rendering issue.
[FIX] UI: Keyboard doesn't hide when click the screen outside of EditBox on iOS platform.
[FIX] UI: Fixed a fatal bug in EditBox implement on Windows platform.
[FIX] UI: Fixed edit box setPlaceholderFontName and scale font size issue.
[FIX] Core: Fixed memory leak when initWithImage() failed.
[FIX] Network: CCDownloader on iOS is broken in v3.9 js-binding.
[FIX] JS: Bindings fixes for Menu, Sprite and Label.
[FIX] Studio: Removed weak reference in ActionNode.
[FIX] UI: shouldStartLoading method should return value to js in js-binding.
[FIX] UI: Fixed scrollview render error.
[FIX] JS: Fixed win32 js project crash issue.
[FIX] UI: Button touch doesn't work with scale9 enabled.
[FIX] JS: Fixed evalString doesn't return result issue.
[FIX] JS: Fixed ComponentJS proxy management issue in JSB.
[FIX] Android: Fixed include in cocos network module.
[FIX] Network: Fixed web socket crash.
[FIX] UI: Fixed TextField missing default password style text setting.
[TEST] S9SpriteTest: Scale9Sprite fade actions with cascade opacity.
[TEST] Web: Removed default focus block from UIFocusTestVertical.
[TEST] Lua: Fixed pageViewTest Horizontal scroll won't work in Lua-test.
更完整的改动列表可以阅读 完整的修改日志.
-
RichText
添加了 RichElementNewLine 以创建新的富文本元素。
更新信息: cocos2d/cocos2d-x#14033
-
PageViewIndicator
添加 PageViewIndicator 以创建 PageViewIndicator.
更新信息: https://github.com/cocos2d/cocos2d-x/blob/v3/cocos/ui/UIPageViewIndicator.h
-
PageView
修改 PageView 使之继承自 ListView.
更新信息: cocos2d/cocos2d-x#14252
-
ApplicationProtocol
添加 API getVersion.
-
PolygonInfo
添加 API setTriangles.
-
Scale9Sprite
添加 setRenderingType, getRenderingType.
-
FontFNT
添加 setFontSize, getOriginalFontSize.
-
Label
添加 setBMFontSize, getBMFontSize, enableWrap, isWrapEnabled, setOverflow, getOverflow, initWithTTF, isShadowEnabled, getShadowOffset, getShadowBlurRadius, getShadowColor, getOutlineSize, getLabelEffectType, getEffectColor.
-
AudioEngineImpl
添加 AudioEngineImpl 以实现 FMOD.
-
Lua Module
添加 luaval_to_node, node_to_luaval.
-
JS Module
添加 js_cocos2dx_ComponentJS_create
-
ui::Text
添加 isShadowEnabled, getShadowOffset, getShadowBlurRadius, getShadowColor, getOutlineSize, getLabelEffectType, getEffectColor.
-
UITextTest_Clone
添加 UITextTest_Clone 类。