local sharedTextureCache = cc.Director:getInstance():getTextureCache()
local sharedSpriteFrameCache = cc.SpriteFrameCache:getInstance()
local imgs = {'14392.PNG', '14393.PNG', '14394.PNG', '14395.PNG'}
for _, img in ipairs(imgs) do
local tx = sharedTextureCache:addImage(img)
local rect = tx:getContentSize()
rect.x = 0
rect.y = 0
local frame = cc.SpriteFrame:createWithTexture(tx, rect)
sharedSpriteFrameCache:addSpriteFrame(frame, img)
end
local frames = display.newFrames("%d.PNG", 14392, 4)
dump(frames)
cocos2d-x lua中使用协程的坑
coroutine.resume 会使用coroutine.create创建的lua_state进行执行,导致to_lua的绑定代码的L会混乱。一些回调函数的执行会破坏参数。
要使用协程,建议coroutine.create中的逻辑无任何to_lua的绑定代码执行。
TexturePacker 命令行自动打包
需求:自动打包文件夹下的所有图片,如果超单纹理大小,自动拆分为多个文件。
TexturePacker --multipack --texture-format png --format cocos2d --max-width 2048 --max-height 2048 --data {n}.plist --sheet {n}.png /target/rootDirOfPng
注意:rootDirOfPng不会被加入帧名,旗下的二级目录会加入。
fairyGUI cocos2d-x 运行时坑点总结
- 多摄像机支持不完整,慎用自定义摄像机渲染fairyGUI
cameraMask实现不完整。类似Button的容器,内部有多个GObject,但是设置cameraMask只会设置到当前渲染的GObject的displayObject,其它状态的设置不到,异常尴尬。即使修正了setCameraMask,也会GComponent::hitTest的事件分发判断也是不可修正的,fairyRoot分发事件,但是fairyRoot永远是default摄像机,不能引用引擎currentCamera,导致hitTest不能正确判断点击区域。 GList的setVirtualAndLoop之后,顺序有问题,可如下修正。但是循环滚动位置错乱的问题没有定位到原因。
void GList::removeChildrenToPool(int beginIndex, int endIndex) { if (endIndex < 0 || endIndex >= _children.size()) endIndex = (int)_children.size() - 1; #if 1 // fix item order: returnToPool() use push, and getObject() use pop, the order will broken for (int i = endIndex; i >= beginIndex; --i) removeChildToPoolAt(i); #else // backup old codes for (int i = beginIndex; i <= endIndex; ++i) removeChildToPoolAt(beginIndex); #endif }
Cocos2d-Lua-Community 4.0 橡皮擦代码
display.newSprite("hideback.png"):addTo(self):center()
local render = cc.RenderTexture:create(display.width, display.height):center():addTo(self)
local sp = cc.Sprite:create("HelloWorld.png"):center()
render:begin()
sp:visit()
render:endToLua()
local circle = display.newSolidCircle(20,{color = cc.c4f(0.5, 0.5, 0.5, 0)})
circle:retain()
circle:setBlendFunc(cc.blendFunc(cc.backendBlendFactor.SRC_ALPHA, cc.backendBlendFactor.ZERO))
self:addNodeEventListener(cc.NODE_TOUCH_EVENT,function ( event )
if event.name == "began" then
return true
end
if event.name == "moved" then
circle:pos(event.x,event.y)
render:begin()
circle:visit()
render:endToLua()
end
end)
self:setTouchEnabled(true)
Cocos2d-Lua-Community编译Linux external
编译png
$cmake .. -DPNG_STATIC=ON -DZLIB_INCLUDE_DIR=/home/u0u0/works/Cocos2d-thirdpart/tarballs/zlib-1.2.8/ -DZLIB_LIBRARY=/home/u0u0/works/Cocos2d-thirdpart/tarballs/zlib-1.2.8/
编译websockets
$cmake .. -DOPENSSL_ROOT_DIR=/home/u0u0/works/Cocos2d-thirdpart/tarballs/openssl-1.1.0c -DZLIB_INCLUDE_DIR=/home/u0u0/works/Cocos2d-thirdpart/tarballs/zlib-1.2.8/ -DZLIB_LIBRARY=/home/u0u0/works/Cocos2d-thirdpart/tarballs/zlib-1.2.8/ -DLWS_WITH_LIBUV=OFF -DLWS_WITH_SSL=ON -DLWS_WITH_SHARED=OFF -DLWS_WITHOUT_TEST_SERVER=ON -DLWS_WITHOUT_TEST_SERVER_EXTPOLL=ON -DLWS_WITHOUT_TEST_PING=ON -DLWS_WITHOUT_TEST_ECHO=ON -DLWS_WITHOUT_TEST_CLIENT=ON -DLWS_WITHOUT_TEST_FRAGGLE=ON -DLWS_IPV6=ON
编译OpenSSL
在 Linux 下自定义OpenSSL库,需要安装到一个路径,以便curl能找到。
./config --prefix=/home/u0u0/works/projects/Cocos2d-thirdpart/tarballs/openssl_install --openssldir=/home/u0u0/works/projects/Cocos2d-thirdpart/tarballs/openssl_install
make
make install
编译curl
./configure --enable-static --disable-ldap --enable-ipv6 --with-zlib=/home/u0u0/works/Cocos2d-thirdpart/tarballs/zlib-1.2.8/ --with-ssl=/home/u0u0/works/projects/Cocos2d-thirdpart/tarballs/openssl_install --prefix=/home/u0u0/works/projects/Cocos2d-thirdpart/tarballs/curl_install
make
make install
编译OpenAL
$sudo apt-get install libasound2-dev
$cmake .. -DLIBTYPE=STATIC -DALSOFT_INSTALL=OFF -DALSOFT_REQUIRE_ALSA=ON
Quick-Cocos2dx-Community v3.7.8 Beta
视频讲解
新开通B站视频讲解,传送门:Quick-Cocos2dx-Community 3.7.8 改动说明
新增
- 重构TMXXMLParser、TMXMap与TMXLayer,实现对TiledMap 1.2以上新功能的支持。
- 添加GrayScale着色器,Lua层可使用。
TiledMap旋转与翻转
选中图块,
键盘x键进行x轴翻转,
键盘y键进行y轴翻转,
键盘z键进行旋转(每次90度)
可以看到鼠标上的图块发生了改变,刷到地图上即可.
Quick-Cocos2dx-Community 3.7.7 Beta
新增
- FastTMXLayer 支持设置透明度和颜色。
- WebView同步最新实现,新增cleanCachedData,setOpacityWebView,setBackgroundTransparent方法。
- Android增加对虚拟按键隐藏的支持。
- audio添加playBGMSync,playEffectSync接口,但依然推荐在loading场景先预加载所有音频。
- cc.FileUtils新增绑定getFileDataFromZip和unzipFile
- Luasocket添加socket.dns.isIpv6()接口,以异步方式判断网络类型,同步优化SimpleTCP,解决可能柱塞UI的问题。
- display中新加FIXED_AUTO分辨率适配模式,自动选择 FIXED_WIDTH 或 FIXED_HEIGHT。
Quick-Cocos2dx-Community 3.7.6 Beta
测试稳定后将正式发布到 http://www.cocos2d-lua.org。
3.7.6 Beta 主要改进:
- Android arm64 支持。
- 龙骨支持。
改进
- Windows 添加 Luajit 64 执行程序,可以在 Windows 上打包 luajit 的64位 bytecode 了。
- Android arm64-v8a 发布支持,适应 Google Play 9月政策。
- cc.pGetAngle() 实现优化。
- retain the sprite frame, do not removed by SpriteFrameCache::removeUnusedSpriteFrames。
- 龙骨集成。
- [luaoc] add conversion lua table to ObjC Dictionary
- [luaj]s1.Add missing default cases; 2. fix the return value to nil instead of empty string when java return null.