cocoStudio UI使用Clone() SpriteFrameCache BUG

win7 64
cocoStudio 版本 1.6.0.0
cocos2d.x.version: cocos2d-x 3.3

gl.version: 4.4.0
gl.supports_NPOT: true
cocos2d.x.version: cocos2d-x 3.3
cocos2d.x.compiled_with_profiler: false
cocos2d.x.build_type: DEBUG
cocos2d.x.compiled_with_gl_state_cache: true
gl.max_texture_size: 16384
gl.vendor: NVIDIA Corporation
gl.renderer: GeForce GTS 450/PCIe/SSE2
gl.max_texture_units: 192
gl.supports_ETC1: false
gl.supports_S3TC: true
gl.supports_ATITC: false
gl.supports_PVRTC: false
gl.supports_BGRA8888: false
gl.supports_discard_framebuffer: false
gl.supports_vertex_array_object: true

代码如下:
帖子修改之后 代码格式化出问题了…很无奈





local curScene = cc.Director:getInstance():getRunningScene()
if not curScene then
 curScene = cc.Scene:create()
end
local itemTemp
itemTemp = ccs.GUIReader:getInstance():widgetFromJsonFile("bossReportItem/bossReportItem.json")
itemTemp:retain()
local  btn = ccui.Button:create("back1.png",nil,nil,1)
curScene:addChild(btn)
btn:setPosition(100,100)
btn:setTouchEnabled(true)
btn:addTouchEventListener(function(s,e)
 if e == ccui.TouchEventType.ended then
  cc.SpriteFrameCache:getInstance():removeUnusedSpriteFrames()
  cc.Director:getInstance():getTextureCache():removeUnusedTextures()
  local delete = itemTemp:clone()
 end
end)



经过
cc.SpriteFrameCache:getInstance():removeUnusedSpriteFrames()
cc.Director:getInstance():getTextureCache():removeUnusedTextures()
这两句话之后
itemTemp 的SpriteFrames 被删掉
导致clone() 报错

报错信息:
LUA ERROR:
{1:ASSERT FAILED ON LUA EXECUTE: CCSpriteFrame must be non-NULL – }
stack traceback:
:72: in function ‘printError’
:115: in function <:113>
: in function ‘clone’
:37: in function <:32>

报错C++ 代码:


 bool Scale9Sprite::initWithSpriteFrameName(const std::string& spriteFrameName, const Rect& capInsets)
    {
        CCASSERT((SpriteFrameCache::getInstance()) != NULL, "SpriteFrameCache::getInstance() must be non-NULL");
        
        SpriteFrame *frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(spriteFrameName);  //这里获取的frame为NULL  被removeUnusedSpriteFrames()清理掉了
        
        std::string str;
        str = "CCSpriteFrame must be non-NULL:  ";
        str += spriteFrameName;
        CCASSERT(frame != NULL, str.c_str());

        if (NULL == frame) return false;
        
        bool pReturn = this->initWithSpriteFrame(frame, capInsets);
        return pReturn;
    }

过程
1 cocos 3.3新建lua 工程,没有导入代码
2 GameScene.lua
3 lua 调试, 使用 runtime/win32/PrebuiltRuntimeLua.exe

项目: 百度网盘 http://pan.baidu.com/s/1ntn6k5N

报错的详细 信息呢?
引擎的版本号?
谢谢。

ffui是什么东西?

报错信息:
LUA ERROR:
{1:ASSERT FAILED ON LUA EXECUTE: CCSpriteFrame must be non-NULL: btn_fuchou1.png – }
stack traceback:
:72: in function ‘printError’
:115: in function <:113>
: in function ‘clone’
:37: in function <:32>

平台:
win7 64
cocoStudio 版本 1.6.0.0
cocos2d.x.version: cocos2d-x 3.3

ffui 是个全局变量 我已经删掉.修改了 原帖. :14:

感谢反馈,回头我把测试结果在此回帖。如果是bug,我会尽快修复。谢谢。

我测试了一下,ImageView本身的clone并没有问题,请问能否整一个demo工程,然后上传网盘分享给我。我这边重现不了。。
谢谢。

好的我把工程的资源 上传下

资源: 百度网盘 http://pan.baidu.com/s/1ntn6k5N

沉了吗,最后解决没有的

遇到相同问题~~还请龙哥 给解决下谢谢下 最后有解决办法吗?

先 clone 再释放呢?