向师父求教全集,Cocos3.4 CCArmature setGlobalZOrder 无效

今天看啥 热点:
quick-cocos2d-x 从2.2.5升级到3.3的体会,quickcocos2dx3.3
& & 最近公司的项目需要把项目从quick 2.2.5升级到quick 3.3 final版本,我发现改动还是很大的,但是github上的文档只涵盖了很少的一部分,因此我在这里把自己升级中的一些注意事项罗列出来,希望能有所帮助。
&&&&&& 首先,我们可以看看github上的文档,主要有如下部分:
下列函数或常量需要替换:
CCLuaLog()
CCFileUtils:sharedFileUtils()
cc.FileUtils:getInstance()
kCCTexture2DPixelFormat_*
cc.TEXTURE2D_PIXEL_FORMAT_*
display.addSpriteFramesWithFile
display.addSpriteFrames
ccc4FFromccc4B()
cc.c4fFromc4b()
getZOrder()
getLocalZOrder()
setZOrder()
setLocalZOrder()
setFlipX()
setFlippedX()
setFlipY()
setFlippedY()
& & & & 结合自己的项目,我们发现还有一些我们在升级时需要注意的东西并没有标注出来。
1.ccp改为cc.p
2.CCDirector等大量CC的写法改为cc.Director,即CCDirector:sharedDirector()改为cc.Director:getInstance(),SimpleAudioEngine:sharedEngine()改为cc.SimpleAudioEngine:getInstance()。
3.骨骼动画写法的修改,如CCArmature:create 改为&ccs.Armature:create等
4.骨骼动画的释放,ccs.ArmatureDataManager:purge()改为ccs.ArmatureDataManager:destroyInstance()
5.音乐播放类的带background的方法写法的修改,如isBackgroundMusicPlaying改为isMusicPlaying
6.sprite的点击判断的修改,如下面例子:self.sprite是我们的精灵,pnt是我们的点,那么self.sprite:getBoundingBox():containsPoint(pnt)改为cc.rectContainsPoint(self.sprite:getBoundingBox(), pnt)
7.ui.newBMFontLabel改为cc.ui.UILabel.newBMFontLabel
8.现在的layer层默认是吞噬点击,所以我们在添加新的层的时候,应当设置为不可吞噬,也就是setTouchSwallowEnabled(false)
9.tableview里的写法改变:如kCCScrollViewDirectionVertical改为cc.SCROLLVIEW_DIRECTION_VERTICAL等
10.http请求回调的返回值“inprogress”改为“progress”
11.同时多个assetsmanager同时在下载的过程中,回调的progress值会产生跳动的情况,解决的方法是找到asstsmanager.cpp文件,修改其中的一个函数的percent前的前缀static,把static去掉并重新编译即可。
12.assetsmanager写法修改,如:
local assetsManager = cc.AssetsManager:new(zipurl, versionurl, path)
assetsManager:deleteVersion()
assetsManager:retain()
assetsManager:setConnectionTimeout(3)
其中retain这句话必不可少,否则会报错。
13.ui.newImageMenuItem改为cc.ui.UIPushButton.new。
14.在quick 3.3中,精灵不可以直接执行cc.PageTurn3D方法,会直接报错,我的解决方法是用cc.NodeGrid:create()创建一个nodegrid,把我们的精灵加在这个nodegrid上,然后在用nodegrid去调用类似PageTurn3D的方法即可。
15.物理引擎相关代码的修改,在一开始创建的时候,
local Scene = class(&Scene&, function()
return display.newPhysicsScene(&Scene&)
创建长方形的刚体,
local b = cc.PhysicsBody:createBox(cc.size(x, y))
b:getShape(0):setMass() & 设置重量
b:getShape(0):setRestitution() &设置弹力
b:setVelocity() 设置速度
如果我们想绑定精灵a到b上,即
a:setPhysicsBody(b)
16.在android上,device.cachePath改为device.writablePath
17.骨骼动画的play()方法去掉,改为playWithIndex
18.在android真机上编译的时候,我们要注意:
这里直接贴上github上的表格,
要启用这个功能,开发者需要打开项目中的&proj.android/jni/Application.mk&文件,然后将不需要的模块值改为&0。
CC_USE_CURL
使用 CURL 库提供 HTTP 网络功能。关闭后,assetsmanager等相关功能也会被去掉。quick 在 Android 下使用 Android 系统的 Java 接口提供 HTTP 网络功能,所以 CURL 关闭后仍然可以使用HttpRequest。
CC_USE_TIFF
使用 TIFF 图像格式。
CC_USE_WEBP
使用 WebP 图像格式。
CC_USE_JPEG
使用 JPEG 图像格式。
CC_USE_PHYSICS
使用物理引擎。
使用 3D 模块。
CC_USE_SQLITE
使用 Lua 的 Sqlite 数据库扩展 lsqlite3。
CC_USE_CCSTUDIO
使用 Cocos Studio 支持模块。
CC_USE_CCBUILDER
使用 Cocos Builder 支持模块。
CC_USE_SPINE
使用 Spine 支持模块。
CC_CODE_IDE_DEBUG_SUPPORT
使用 cocos IDE 调试支持模块。在 release 版本里自动关闭,因此没有统计它在release版本下的体积。
只需要在&Applicaiton.mk&中将相应的宏设置为&0,然后重新编译就可以得到更小的可执行文件。
在proj.android_no_anysdk工程中,以上可选模块均已经关闭。因此如果直接使用no_anysdk工程来编译,生成的apk包将不支持上述模块功能,如需要请自己修改相应的开关。
还有一些常用的基础模块可以去除,由于可能影响常用的功能,请根据自己的情况移除。打开文件 frameworks/runtime-src/Classes/lua_module_register.h ,分别注释掉以下语句:
register_cocosdenshion_module(L);
// 简单音效模块
register_network_module(L);
// 网络模块,如 socket 和 websocket
register_ui_moudle(L);
// 基础UI库,如编辑框等
register_extension_module(L);
// 基本扩展,如 TableView 等
register_audioengine_module(L);
// audio engine 模块
这里,如果我们发现编译后的包还是出现找不到sqlite3之类的错误,那么我们可以运行android项目下的clean.bat,然后再重新编译即可。
上面是自己在从quick2.2.5到3.3升级的过程中的一些理解,希望能有所帮助。
相关搜索:
相关阅读:
相关频道:
Android教程最近更新主题 : 求教大神,cocos2d-js打包安卓失败
级别: 新手上路
可可豆: 61 CB
威望: 61 点
在线时间: 44(时)
发自: Web Page
来源于&&分类
求教大神,cocos2d-js打包安卓失败&&&
E:\&cd helloE:\hello&cocos compile -p androidRunning command: compileBuilding mode: debugAndroid platform not specified, searching a default one...running: '&E:\android-sdk-windows\tools\android& update project -t android-19 -p E:\hello\frameworks\runtime-src\proj.android'Updated project.propertiesUpdated local.propertiesUpdated file E:\hello\frameworks\runtime-src\proj.android\proguard-project.txtbuilding nativeNDK build mode: debugNDK_TOOLCHAIN_VERSION: 4.8running: '&E:\android-ndk-r9d\ndk-build& -C E:\hello\frameworks\runtime-src\proj.android -j4 NDK_MODULE_PATH=E:\Cocos\frameworks/cocos2d-x-3.4rc1;E:\Cocos\frameworks/cocos2d-x-3.4rc1/E:\Cocos\frameworks/cocos2d-x-3.4rc1/external NDK_TOOLCHAIN_VERSION=4.8 NDK_DEBUG=1'Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 9 in ./AndroidManifest.xmlmake.exe: Entering directory `E:/hello/frameworks/runtime-src/proj.android'[armeabi] Gdbserver&&&&&&: [arm-linux-androideabi-4.8] libs/armeabi/gdbserver[armeabi] Gdbsetup&&&&&& : libs/armeabi/gdb.setup[armeabi] Compile++ thumb: cocos2djs_shared &= AppDelegate.cpp[armeabi] Compile++ thumb: cocos2djs_shared &= SimpleConfigParser.cpp[armeabi] Compile++ thumb: cocos2djs_shared &= RuntimeJsImpl.cpp[armeabi] Compile++ thumb: cocos2djs_shared &= main.cppIn file included from E:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/3d/prebuilt-mk/../../network/HttpClient.h:30:0,&&&&&&&&&&&&&&&& from E:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/scripting/js-bindings/proj.android/prebuilt-mk/../../manual/network/XMLHTTPRequest.h:34,&&&&&&&&&&&&&&&& from jni/../../Classes/js_module_register.h:19,&&&&&&&&&&&&&&&& from jni/../../Classes/ide-support/RuntimeJsImpl.cpp:18:E:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h: In member function 'void cocos2d::network::HttpRequest::setResponseCallback(cocos2d::Ref*, cocos2d::SEL_CallFuncND)':E:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h:185:66: warning: 'void cocos2d::network::HttpRequest::setResponseCallback(cocos2d::Ref*, cocos2d::network::SEL_HttpResponse)' is deprecated (declared at E:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h:188) [-Wdeprecated-declarations]&&&&&&&& setResponseCallback(pTarget, (SEL_HttpResponse) pSelector);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&^[armeabi] Compile thumb&&: cpufeatures &= cpu-features.c[armeabi] StaticLibrary&&: libcpufeatures.aAt global scope:cc1plus.exe: warning: unrecognized command line option &-Wno-extern-c-compat& [enabled by default]cc1plus.exe: warning: unrecognized command line option &-Wno-extern-c-compat& [enabled by default][armeabi] SharedLibrary&&: libcocos2djs.soE:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/scripting/js-bindings/proj.android/prebuilt-mk/../../../../../prebuilt/android/armeabi/libjscocos2dandroid.a(CCJavascriptJavaBridge.o):function JavascriptJavaBridge::callStaticMethod(JSContext*, unsigned int, JS::Value*): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)'E:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/editor-support/cocostudio/prebuilt-mk/../../../../prebuilt/android/armeabi/libcocostudio.a(CCActionNode.o):function std::vector&cocos2d::Vector&cocostudio::ActionFrame*&*, std::allocator&cocos2d::Vector&cocostudio::ActionFrame*&*& &::at(unsigned int): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)'E:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/editor-support/cocostudio/prebuilt-mk/../../../../prebuilt/android/armeabi/libcocostudio.a(CCArmature.o):function cocostudio::Armature::drawContour(): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)'E:\Cocos\frameworks/cocos2d-x-3.4rc1/cocos/editor-support/cocostudio/prebuilt-mk/../../../../prebuilt/android/armeabi/libcocostudio.a(CCArmature.o):function cocostudio::Armature::init(std::string const&): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)'collect2.exe: error: ld returned 1 exit statusmake.exe: *** [obj/local/armeabi/libcocos2djs.so] Error 1make.exe: Leaving directory `E:/hello/frameworks/runtime-src/proj.android'Ndk build failed!E:\hello&
级别: 新手上路
可可豆: 2 CB
威望: 2 点
在线时间: 37(时)
发自: Web Page
同问!!哪位大神知道.....
级别: 新手上路
可可豆: 111 CB
威望: 111 点
在线时间: 17(时)
发自: Web Page
回 1楼(thorqq) 的帖子
配置没弄好吧&&JDK版本和NDK版本好像有要求
级别: 论坛版主
UID: 300874
发帖: 2371
可可豆: 3095 CB
威望: 3153 点
在线时间: 1342(时)
发自: Web Page
使用ndk r10c试试。
级别: 新手上路
可可豆: 70 CB
威望: 70 点
在线时间: 47(时)
发自: Web Page
回 楼主(sun5471) 的帖子
好像导入eclipse后编译很多问题,连教程都没有
关注本帖(如果有新回复会站内信通知您)
iPhone5的分辨率? 正确答案:
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版主题 : 求助:CCArmatureAnimation类的setFrameEventCallFunc
级别: 侠客
可可豆: 343 CB
威望: 483 点
在线时间: 60(时)
发自: Web Page
来源于&&分类
求助:CCArmatureAnimation类的setFrameEventCallFunc&&&
帧事件在编辑器里怎么用呢? 直接写回调的函数么?&
欢迎大家交流
级别: 风云使者
UID: 183396
发帖: 4821
可可豆: 5525 CB
威望: 5692 点
在线时间: 1794(时)
发自: Web Page
回 楼主(drizzle) 的帖子
您好,您需要在指定的帧给指定的骨骼添加“帧事件”,属性内添加一个字符串即可,该字符传将在帧事件回调函数内当做参数传入。
级别: 侠客
可可豆: 343 CB
威望: 483 点
在线时间: 60(时)
发自: Web Page
感谢hanrea
欢迎大家交流
级别: 新手上路
可可豆: 12 CB
威望: 12 点
在线时间: 2(时)
发自: Web Page
回 1楼(hanrea) 的帖子
cocos2d 2.2.2中添加注册 setFrameEventCallFunc(this,frameEvent_selector(Layer_GameFight::onFrameEvent)); 报错怎么处理啊?&&error C2440: “类型转换”: 无法从“void (__thiscall Layer_GameFight::* )(cocos2d::extension::Bone *,const char *,int,int)”转换为“cocos2d::extension::SEL_FrameEventCallFunc”&
级别: 侠客
UID: 308078
可可豆: 377 CB
威望: 359 点
在线时间: 239(时)
发自: Web Page
回 3楼(惯性老哥) 的帖子
CCBone作为参数
关注本帖(如果有新回复会站内信通知您)
9*6-8 正确答案:46
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版主题 : CCArmature换皮肤,皮肤四处飞散
级别: 新手上路
可可豆: 83 CB
威望: 84 点
在线时间: 109(时)
发自: Web Page
来源于&&分类
CCArmature换皮肤,皮肤四处飞散&&&
cocos2d-x版本2.2.5&cocostudio版本1.6&出现的手机:所有&出现概率:100%&若创建人物后立即换肤,可见皮肤从人物向四处飞散。&若创建人物进入游戏,0.1秒后,再换肤,可见皮肤从人物周围飞散。&若创建人物进入游戏,1秒后,再换肤,可见皮肤不飞散。(其实是已飞散到屏幕外了)&神奇的是,在皮肤飞散后,但人物本身的骨骼和皮肤,是正常的。飞散出去的,似乎是复制品。&&armatureHero = new CCArmature();&&&& armatureHero-&init(&hero_1&);&&&& armatureHero-&setScale(1.2f);&&&& armatureHero-&setPosition(ccp(254, 161));&&&& armatureHero-&setZOrder(1);&&&& animationHero = armatureHero-&getAnimation();&&&& animationHero-&setSpeedScale(1.5f);&&&& animationHero-&setMovementEventCallFunc(this, movementEvent_selector(MainMenuScene::onHeroAnimationEvent));&&&& animationHero-&play(&attack-1&);&&&& this-&addChild(armatureHero);&&&& for (int i = 0; i & 16; i++)& //替换16块皮肤&&&& {&&&&&&&& CCBone* bone = NULL;&&&&&&&& CCSkin* weaponSkin = NULL;&&&&&&&& string skinfile = &hero_& + IntToStr(skinData.tail) + &r.png&;& //找到骨骼皮肤图&&&&&&&& string layerstr = &Layer& + IntToStr(skinData.layer);&& //找到要替换的骨骼Layer名称&&&&&&&& bone = armatureHero-&getBone(layerstr.c_str());&&&&&&&& bone-&changeDisplayWithIndex(-1, true);&&&&&&&& weaponSkin = CCSkin::createWithSpriteFrameName(skinfile.c_str());&&&&&&&& if (weaponSkin)&&&&&&&& {&&&&&&&&&&&& bone-&addDisplay(weaponSkin, 0); //添加皮肤到骨骼&&&&& }&&&&&&&& bone-&changeDisplayWithIndex(0, true); //显示新添加的骨骼&&& }&
级别: 风云使者
UID: 183396
发帖: 4821
可可豆: 5525 CB
威望: 5692 点
在线时间: 1794(时)
发自: Web Page
你好,能截个图看下么?&换装是要求不更改装备图片的大小的情况下完成的。如果更改了就不对。另外你的动画正常播放是否会散架呢?
级别: 新手上路
可可豆: 83 CB
威望: 84 点
在线时间: 109(时)
发自: Web Page
回 1楼(hanrea) 的帖子
图片大小我明天确认一下。动画可正常播放。
关注本帖(如果有新回复会站内信通知您)
4*5+2 正确答案:22
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版

我要回帖

更多关于 setglobalzorder 的文章

 

随机推荐