【问题标题】:How to layer a CCSprite on top of a CCSprite?如何在 CCSprite 上叠加 CCSprite?
【发布时间】:2012-01-23 08:55:27
【问题描述】:

在我的游戏中,我有一系列头像,目前每个头像都有一个小矩形容器,表示这个图片是一个按钮,可以点击。

但是,我意识到我需要更改容器的颜色来表示视觉效果(例如按钮单击)。

例如:

关闭状态 = 灰色容器。开启状态 = 红色容器

与其在开/关状态下重复每个头像,我想将容器和头像分开,有点像这张粗略的绘图;

+------+    +------+  
|      |    |      |    O
| OFF  |    | ON   |   / \
|      |    |      |   --- 
+------+    +------+

因此,我们将 off 容器、on 容器和头像分开。

然后,在我的游戏中,我希望能够使用我想要使用的图层重新构建精灵,此外我希望新构建的精灵表现得像一个单一的 CCSprite,这样我就可以正确定位它,或者用精灵做其他事情。

有点像从相互叠加的各种 CCSprite 创建一个 CCSprite。

因此,我怎样才能将多个 sprite 叠加在一起,然后使用分层的 CCSprites 创建一个 CCSprite?

谢谢。

/编辑:添加了一些代码。

我使用 CCLayer 创建了一些代码,然后将我的精灵添加为图层的一部分。

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

        CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode 
                                          batchNodeWithFile:@"avatars.png"];
        [self addChild:spriteSheet];

        CCSprite *empty = [CCSprite spriteWithSpriteFrameName:@"hold_empty.png"];
        CCSprite *boss1 = [CCSprite spriteWithSpriteFrameName:@"hold_boss_1.png"];

        CCLayer *holderExample = [[CCLayer alloc] init];
        [holderExample setContentSize:CGSizeMake(70, 72)];
        [holderExample setPosition:CGPointMake(100, 100)];
        [holderExample addChild:empty];
        [holderExample addChild:boss1];

        [self addChild:holderExample];

这似乎创建了一个包含两个精灵的图层。这似乎是正确的,但我不确定这是否正确,因为我不确定是否可以使其可点击或处理其他事件。

另外,我想为颜色添加一个图层。

按 Z 顺序:

1) -2 空.png

2) -1个颜色层

3) 0 个头像

【问题讨论】:

  • 您的意思是简单地将一个 CCSprite 添加为另一个 CCSprite 的子级?
  • 您可以为按钮使用 CCMenuItemImage 并设置启用和禁用图像..
  • @Ultrakome - 不,我的意思是 3 张图片,(1) 关闭状态容器 (2) 状态容器 (3) 头像。然后,我将关闭/开启状态叠加在头像之上,制作一个新的 CCSprite
  • @Marine - 我确实在 CCMenuItemImage 上玩了一点按钮,但我不知道如何在其中添加精灵
  • @Ultrakorne - 想象一下一堆卡片。第一张卡片/图层是头像精灵,第二张卡片/图层是关闭/开启状态。不过,整个事情应该是一个 CCSprite。

标签: cocos2d-iphone layer ccsprite cclayer


【解决方案1】:

您可以为开/关状态制作图像,并将其添加为具有开、关和头像图像的自定义 CCSprite 的子项。此外,您可以为头像应用颜色以产生选择效果。不知道这是否正是你所需要的。

//编辑1 检查此来源,让我知道这是否是您需要的。我所做的非常简单,只是为了向您展示我对颜色的含义。希望对您有所帮助https://rapidshare.com/files/3668681798/TestAvatar.zip

【讨论】:

  • 我想我有一个示例(请参阅问题,因为我添加了一些代码)
  • 只是为了确认, 1. 为开/关状态创建图像。 2. 将这些添加为 CCSprite 的子项。我可以做到这一点,但我不确定你为头像添加颜色是什么意思。你是说颜色层吗?
  • 您可以为 CCSprite 设置颜色,我认为您可以使用该属性实现您想要的效果。无论如何,我认为您只需 3 张图像即可实现这一目标。我会尽量给你一个示例代码。
  • 会的!经过一些研究,我认为 CCLayer 不是正确的方法。原因是因为我认为你不能用图层制作 CCMenuItem,它们必须是图像或精灵。或许还有另一种方式,我去看看你的源码再回复你。
  • @Sentrio -- 我明白你现在的意思了,在你的源代码中,你制作了一个 Avatar 按钮,里面有子 CCSprite,这要好得多,因为我认为你应该能够将它用于CCMenuItem 我应该可以在里面放一个 CCGradient 颜色层。
猜你喜欢
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
相关资源
最近更新 更多