GVKun编程网logo

Cocos2dx:Sprite切换图片(cocos切换场景)

27

在本文中,我们将为您详细介绍Cocos2dx:Sprite切换图片的相关知识,并且为您解答关于cocos切换场景的疑问,此外,我们还会提供一些关于cocos2d-iphone–Cocos2d只显示CC

在本文中,我们将为您详细介绍Cocos2dx:Sprite切换图片的相关知识,并且为您解答关于cocos切换场景的疑问,此外,我们还会提供一些关于cocos2d-iphone – Cocos2d只显示CCSprite的一部分、cocos2d-iphone – Cocos2d的CCSpriteBatchNode抱怨不同的纹理ID、cocos2d-iphone – Cocos2D:在CCSprite上停止/恢复CCAction、cocos2d-iphone – Cocos2d:沿着路径/ bezier移动一个Sprite?的有用信息。

本文目录一览:

Cocos2dx:Sprite切换图片(cocos切换场景)

Cocos2dx:Sprite切换图片(cocos切换场景)

Cocos2dx:Sprite切换图片


更换背景图:


            auto background1 = Sprite::create("original.png");
            Texture2D * pic = Director::getInstance()->getTextureCache()->addImage("Now.png");
            background->setTexture(pic);

cocos2d-iphone – Cocos2d只显示CCSprite的一部分

cocos2d-iphone – Cocos2d只显示CCSprite的一部分

是否有可能仅显示CCSprite的一部分?

它接缝的contentSize属性没有很好的结果.

解决方法

doc_180和James的答案都是通过使用纹理的一部分创建新的CCSprite来实现的,但是如果你使用剪切方法,你将获得使用完整纹理但只能在屏幕上绘制其一部分的CCSprite.此方法的一个优点是,您可以修改要在运行中显示或隐藏的部分的大小,而不必一次又一次地重新创建CCSprite(或一次又一次地替换纹理).

因此,要使用剪切方法,只需下载ClippingNode class from here,并将要剪切的CCSprite添加到该ClippingNode.然后调用其中一个方法来指定限制绘图的区域.我目前正在使用它来创建一个进度条,所以我肯定它确实很有用.

cocos2d-iphone – Cocos2d的CCSpriteBatchNode抱怨不同的纹理ID

cocos2d-iphone – Cocos2d的CCSpriteBatchNode抱怨不同的纹理ID

我正在尝试使用CCSpriteBatchNode优化我的游戏,一次渲染多个精灵.但是,由于某些原因,当我引入CCSpriteBatchNode作为我的精灵的父级时,cocos2d给了我这个错误:

"CCSprite is not using the same texture id"

我很困惑,因为我有一个1024×1024纹理图集和我的所有图形.它是使用TexturePacker创建的,没有批处理节点,一切正常.我一直在加载它:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"atlas1.plist"];

现在我正在尝试使用CCSpriteBatchNode:

CCSprite* sprite = [CCSprite spriteWithSpriteFrameName:@"something.png"];
CCSpriteBatchNode* bar = [CCSpriteBatchNode batchNodeWithFile:@"atlas1.png"];
[bar addChild: sprite]; // assert error here

我尝试将一些NSLog调试输出添加到cocos2d纹理初始化/查找代码中,并且令人惊讶的是,有一些纹理被创建为具有不同的尺寸(例如256×256甚至更小).我不明白当我只有一个1024×1024 png作为输入时会发生什么.

发生了什么?我该怎么调试呢?

更新:

Bongeh的回答帮助我解决了这个问题 – 让我看了两遍.我的iOS模拟器中有一些旧版本的PNG文件被加载,即使它们不在Xcode项目中也是如此.从Xcode执行“清理”甚至“清理构建文件夹”不起作用,但使用iOS模拟器中的“重置内容和设置”命令就可以了.万岁!

解决方法

如果游戏中有超过1个spritesheet,请确保它们不共享和帧名,另一种解决方法是手动指定纹理ID.

将以上代码替换为:

CCSprite* sprite = [CCSprite spriteWithSpriteFrameName:@"something.png"];
CCSpriteBatchNode* bar = [CCSpriteBatchNode batchNodeWithFile:@"atlas1.png"];
[sprite setTexture:[bar texture]];
[bar addChild: sprite]; // assert error here

我发现的唯一另一件事是,如果你的游戏在应用程序委托中收到内存警告,纹理缓存会被清除,你可以将其注释掉,但只要注意清除缓存即可.

cocos2d-iphone – Cocos2D:在CCSprite上停止/恢复CCAction

cocos2d-iphone – Cocos2D:在CCSprite上停止/恢复CCAction

我在CCSprite上运行了两个CCAnimations.如何检查特定操作是否在精灵上运行?如何根据需要暂停/恢复它们?

我已经检查了actionManager中的numberOfRunningAction,但它不等于我期望的数字.

确保设置两个操作的tag属性.然后调用getActionByTag,指定所需操作的标记.如果结果不是nil,则操作正在运行.

不幸的是,你不能暂停任何特定的行动.您只能暂停所有操作(pauseSchedulerAndActions)或停止单个操作(stopActionByTag:或stopAction :),这会将其从操作列表中删除.不是你想要的.

cocos2d-iphone – Cocos2d:沿着路径/ bezier移动一个Sprite?

cocos2d-iphone – Cocos2d:沿着路径/ bezier移动一个Sprite?

我需要从一个CGPoint移动一个精灵到另一个使用Cocos2d为 Iphone.问题是动画应该是一个比萨饼.

基本上我会用这个:

id move = [CCMoveto actionWithDuration:.5f position:ccp(100,200)];
[sprite runAction:move];

现在我怎么可以在一个非线性的路径这样做?

尝试这个
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(0,s.height/2);
bezier.controlPoint_2 = ccp(300,-s.height/2);
bezier.endPosition = ccp(300,100);

id bezierForward = [CCBezierBy actionWithDuration:3 bezier:bezier];

我们今天的关于Cocos2dx:Sprite切换图片cocos切换场景的分享已经告一段落,感谢您的关注,如果您想了解更多关于cocos2d-iphone – Cocos2d只显示CCSprite的一部分、cocos2d-iphone – Cocos2d的CCSpriteBatchNode抱怨不同的纹理ID、cocos2d-iphone – Cocos2D:在CCSprite上停止/恢复CCAction、cocos2d-iphone – Cocos2d:沿着路径/ bezier移动一个Sprite?的相关信息,请在本站查询。

本文标签: