cocos creator 2.3 有个deprecated警告




deprecated.js:158 Sorry, cc.Material.getInstantiatedMaterial is deprecated. Please use cc.MaterialVariant.create insteadwarn @ deprecated.js:158
set @ fairygui.js:15295
GImage.handleGrayedChanged @ fairygui.js:4741
set @ fairygui.js:1098
GComponent.handleGrayedChanged @ fairygui.js:2624


已邀请:

kudo1017 - 工程师

赞同来自: kridoo jetmouse

在assets目录下建一个migration目录,里面建一个use_v2.1.x_cc.getInstantiatedMaterial.js
内容输入:

if(cc.Material) {
    if(cc.Material.getInstantiatedMaterial == undefined) {
        cc.Material.getInstantiatedMaterial = cc.MaterialVariant.create;
    }
}
 
可以绕过报错

kridoo

赞同来自: jetmouse

应该要把creator.d.ts 更新下
fairyGui 的Image.ts中
(<any>cc.Material).getInstantiatedMaterial(material, this);
可能要换成这个
(<any>cc.MaterialVariant).create(material, this);
是不是还要做版本兼容?
 

jetmouse

赞同来自:

这个问题会在原生平台上报错,
E/jswrapper: ERROR: Uncaught TypeError: cc.Material.getInstantiatedMaterial is not a function, location: src/assets/Script/libs/fairygui.js:0:0
    STACK:
    [0]set@src/assets/Script/libs/fairygui.js:11872
    [1]i.handleGrayedChanged@src/assets/Script/libs/fairygui.js:5836
    [2]set@src/assets/Script/libs/fairygui.js:944
    [3]e.setup_beforeAdd@src/assets/Script/libs/fairygui.js:1600
    [4]i.setup_beforeAdd@src/assets/Script/libs/fairygui.js:5894
    [5]i.constructFromResource2@src/assets/Script/libs/fairygui.js:2408
    [6]i.constructFromResource@src/assets/Script/libs/fairygui.js:2340
    [7]i.constructFromResource2@src/assets/Script/libs/fairygui.js:2405
    [8]i.constructFromResource@src/assets/Script/libs/fairygui.js:2340
    [9]e.internalCreateObject@src/assets/Script/libs/fairygui.js:11206
    [10]e.createObjectFromURL@src/assets/Script/libs/fairygui.js:10995
    [11]i.loadFromPackage@src/assets/Script/libs/fairygui.js:5719
    [12]i.loadContent@src/assets/Script/libs/fairygui.js:5697
    [13]i.setup_beforeAdd@src/assets/Script/libs/fairygui.js:5912
    [14]i.constructFro
E/jswrapper: [ERROR] (/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/Object.cpp, 562): Invoking function (0xd5cd6120) failed!
 


 

谷主

赞同来自:

可以自己试试怎么修改,然后贡献仓库。cocos经常改API。我来修改的话要迟点。

一样的小情绪

赞同来自:

api替换就行,根据提示,在fairygui.js中搜索cc.Material.getInstantiatedMaterial替换成cc.MaterialVariant.create

要回复问题请先登录注册