【Bug提交】Button动态加载出现错误

生成一个Button类型的节点,当动态加载图片改变normalSprite,pressedSprite,hoverSprite后
在Web环境下运行良好,
在原生环境下,当鼠标悬停在按钮上,或者点击按钮时都会报错,并且不改变pressed和hover状态的图片
请开发组尽快解决,谢谢!

你这样开发人员是没法帮你解决的,你需要详细描述你的操作,并且贴出错误代码,最好是有重现问题的简单demo,这样开发人员才知道问题出在哪里

你需要把你报错的信息贴出来,我们才能知道是哪里出了问题。

Simulator : jsb ERROR: File …\auto\jsb_cocos2dx_auto.cpp: Line: 13359, Function: js_cocos2dx_SpriteFrame_getTexture
20
Simulator : js_cocos2dx_SpriteFrame_getTexture : Invalid Native Object
20
Simulator : C:/Users/SEELE/AppData/Local/CocosCreator/app-1.1.1/resources/cocos2d-x/simulator/win32//src/jsb_polyfill.js:27871:Error: js_cocos2dx_SpriteFrame_getTexture : Invalid Native Object
20
Simulator : ScriptingCore::callFunctionName error:__errorHandler wasn’t found!

正在demo,一会发上来

bug.rar (2.7 MB)

OK,我测试看看,待会给你答复

web版没问题,原生版有问题

改成这样没问题

而且你的代码在web里也有警告的

好的,谢谢:slightly_smiling:

不客气,等一下看看Knox大神怎么说:grin:

你可以先用神盾局的方法做,不过这个应该也算 bug ,按道理 JSB 不会报错才对。会尽快找出原因并解决。

你用的creator是哪个版本的,我的1.11版按你的改完了,什么都显示不出来了

他的代码在web报错信息和这个帖子的报错信息一样:joy:

你把你代码截图来看看

我看到了你的是1.1.2,我升个版试试

我贴的代码和版本没有关系,1.1.0以后都可以用的,有可能是你的代码哪里有问题:hushed:

是我的问题,把spriteFrame当Texture用了,直接复制了。现在没问题了,谢谢:clap:

嗯,不客气的:grin:

导致报错的原因:
如果使用 new SpriteFrame 后 JSB 会在创建后自动释放 new 出来的对象。所以导致 button 在使用的时候,该 spriteFrame 已经为 null 了,如果想要保留的话需要在创建以后调用 retain(); 保留对象。

例如:

buttonCom.normalSprite = new cc.SpriteFrame(texture)
buttonCom.normalSprite.retain();

好的,知道了