cocos2d 3.0 中的 spriteWithSpriteFrameName 等效项?

Posted

技术标签:

【中文标题】cocos2d 3.0 中的 spriteWithSpriteFrameName 等效项?【英文标题】:spriteWithSpriteFrameName equivalent in cocos2d 3.0? 【发布时间】:2014-05-02 23:58:13 【问题描述】:

我正在尝试制作我的第一个 ios 游戏,我需要批量渲染背景图块。我正在使用 cocos2d 3,但我能找到的每个精灵绘图示例都使用 spriteWithSpriteFrameName,这不再是一个选项。

我正在成功加载精灵表/plist:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"backgrounds.plist"];
CCSpriteBatchNode spriteBatch = [CCSpriteBatchNode batchNodeWithFile:@"backgrounds.png"];

但我不知道如何正确获取 spritesheet 的特定部分。 spriteWithSpriteFrameName 不再是 CCSprite 的方法

CCSprite* tile = [CCSprite spriteWithSpriteFrameName:@"dirt.png"];

【问题讨论】:

有一个 API 参考:cocos2d-iphone.org/docs/api/Classes/CCSprite.html#//api/name/…: 但是没有等同于spriteWithSpriteFrameName: NSString,唯一接受字符串的是图像本身。有些东西可以接受CCSpriteFrame,但没有明确说明如何使用它。 然后查看 ccspriteframe 参考,很确定会有一个“with name”初始化器,无论是那个还是 spriteframecache(spriteframenamed 或其他东西) 【参考方案1】:

在 cocos2d v3.0 中,你必须制作一个精灵帧,而不是使用准备好的精灵帧制作 CCSprite:

CCSpriteFrame* sampleFrame = [CCSpriteFrame frameWithImageNamed:@"dirt.png" ];
CCSprite* title = [CCSprite spriteWithSpriteFrame:sampleFrame];

希望对你有帮助:)

【讨论】:

【参考方案2】:

这是怎么做的:

CCSprite* spriteFile = [CCSprite spriteWithImageNamed:@"file.png"];

【讨论】:

以上是关于cocos2d 3.0 中的 spriteWithSpriteFrameName 等效项?的主要内容,如果未能解决你的问题,请参考以下文章

在 Cocos2d 3.0 中检测长按

Cocos2d 3.0 更新分数

Sprite 帧动画 Cocos2d 3.0

高屋建瓴 cocos2d-x-3.0架构设计 Cocos2d (v.3.0) rendering pipeline roadmap(原文)

Cocos2d 3.0继承自Sprite的类在addChild后出现故障

Cocos2d-x3.0 RenderTexture