Cc.spriteFrameCache.getSpriteFrame获取不到图片的问题

版本:Cocos2d-JS v3.0 RC2

cocos2d-html5测试的时候,想显示.plist中的图片,显示不出来,浏览器提示“cocos2d: cc.SpriteFrameCahce: Frame grossini-head.png not found”

请大神帮忙看看下面代码有问题吗?谢谢!

//cc.spriteFrameCache.addSpriteFrames(“res/baseResource.plist”, “res/baseResource.png”);
cc.spriteFrameCache.addSpriteFrames(“res/animated-grossini.plist”);
var spriteTest001 = cc.Sprite.create(cc.spriteFrameCache.getSpriteFrame(“grossini-head.png”));
spriteTest001.setAnchorPoint(0.5, 0.5);
spriteTest001.setPosition(size.width / 2, size.height / 2);
this.addChild(spriteTest001, 50);

没人知道这个问题吗?
Cocos2d-JS v3.0的相关文档少得可怜,几乎都是2x的。
或者,这就是Cocos2d-JS v3.0的一个bug???

var spriteTest001 = cc.Sprite.create(cc.spriteFrameCache.getSpriteFrame("#grossini-head.png"));
spriteTest001.setAnchorPoint(0.5, 0.5);
spriteTest001.setPosition(size.width / 2, size.height / 2);
this.addChild(spriteTest001, 50);

前面加#

#grossini-head.png

其实你可以直接写成var spriteTest001 = cc.Sprite.create("#grossini-head.png");

谢谢happyfhc!

可是,依然显示不出来,浏览器控制台提示“cocos2d: cc.SpriteFrameCahce: Frame #grossini-head.png not found”

代码:
cc.spriteFrameCache.addSpriteFrames(“res/animated-grossini.plist”);
var spriteTest001 = cc.Sprite.create(cc.spriteFrameCache.getSpriteFrame("#grossini-head.png"));
spriteTest001.setAnchorPoint(0.5, 0.5);
spriteTest001.setPosition(size.width / 2, size.height / 2);
this.addChild(spriteTest001, 50);

另:
var spriteTest001 = cc.Sprite.create("#grossini-head.png"); 会报错,直接就黑屏了。

我现在怀疑是不是animated-grossini.plist问题啊?这个是从cocos2d-js-v3.0-rc2/samples/js-tests/res/ccb复制过来的。
附件是这个测试工程的源码,能帮忙看看是什么原因么?
问题代码在FruitAttackT/src/GameWelcomeLayer.js第45行开始。

谢谢~辛苦!

cc.spriteFrameCache.addSpriteFrames(“res/animated-grossini.plist”);
cc.textureCache.addImage(“res/animated-grossini.png”);

不仅要把plist加进来 也要把png加入到纹理缓存中

加了cc.textureCache.addImage(“res/animated-grossini.png”);,还是不好使:6:

看了你的代码,主要问题是你的资源没有预先加载,如果预先加载了就没问题了
主要改动的地方
1、resource.js

var res = {
grossini_png : “res/animated-grossini.png”,
grossini_plist : “res/animated-grossini.plist”
};

var g_resources =
//image
s_HelloWorld,
s_CloseNormal,
s_CloseSelected,

res.grossini_png,
res.grossini_plist

//plist

//fnt

//tmx

//bgm

//effect

];



2、GameWelcomeLayer.js

<pre class="brush:js; toolbar: true; auto-links: false;">cc.spriteFrameCache.addSpriteFrames(res.grossini_plist);
var playerTexture = cc.textureCache.addImage(res.grossini_png);
var spriteTest001 = cc.Sprite.create("#grossini-head.png");

终于好使了!
刚开始弄html5和js方面的东西,还晕菜的很呐!

谢谢happyfhc了!!!

我刚才试了下 貌似只用预加载plist文件也行,而且不用cc.textureCache.addImage(),也行,不知楼主试过没。

是么?晚上回去试一试,现在在外面参加一个html5游戏的会呢,谢谢啊!

刚刚试了下,不用cc.textureCache.addImage()可是可以显示图片的,重要的是需要预加载资源文件。
非常感谢happyfhc和vili2056!

研究了源码,配置的resour只会放在cc.loader.cache中,其实资源都已经加载好,只是没有放到cc.spriteFramerCache中来,所有在cc.LoaderScene.preload后,启动游戏业务Scene之前,必须手动通过cc.spriteFrameCache.addSpriteFrames把资源从loader从加入到cc.spriteFramerCache,在这过程中,sprites.png是可以缺省的,默认取plist文件的文件名对应的png文件。

个人建议官方把以上的添加过程在启动阶段自动做了,这样开发者只要配置好资源就行了。

不知道你写的这是C++还是lua

:9::9::9::9::9::9::9: