问题标签 [cclayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
651 浏览

cocos2d-iphone - Cocos2d游戏层运行时卡顿,替换场景后平滑

我的游戏场景是使用 replaceScene 从关卡选择场景运行的,并传入关卡编号。游戏层从 plist 加载数据,然后在世界空间中创建对象(具有 box2d 主体的 CCSprite 子类)。播放关卡时,英雄角色保持在屏幕中央 - 我调整图层位置以执行此操作,同时根据移动速度放大和缩小图层比例。

例如:

问题是,第一次运行关卡时,当速度增加并且图层缩小时(不仅仅是开始时的几秒钟),移动通常会很不稳定。但是,如果用户重新启动关卡(按钮执行 replaceScene),替换关卡的移动非常平滑,即使是在速度上也是如此。

我正在使用批处理节点并将精灵图像存储在帧缓存中。我已经尝试在关卡选择场景中设置帧缓存和预加载声音,但这没有任何区别。我曾尝试清除关卡之间的缓存以查看是否可以使重新启动的关卡表现出相同的行为,但这并没有做任何事情。

谁能建议可能导致这种情况的原因以及我如何能够消除它。

谢谢!

0 投票
1 回答
225 浏览

cocos2d-iphone - 只想在 cocos2d 中点击按钮后绘制实心圆/点

刚开始看cocos2d,很想学。
基本上我只想在我触摸屏幕的地方画一个小实心圆(如半径 20 左右的点),它只能在按下按钮后启用。我怎样才能做到这一点 ?

对于我正在使用的按钮CCMenuItem。这是代码。

仅点击此按钮后,我想要一个我在屏幕上触摸的圆圈。

请帮助我。我已经搜索并尝试了很多东西,但无法获得关于这件事的清晰知识或想法。
欢迎您提出建议。

谢谢 ,

0 投票
0 回答
415 浏览

cocos2d-iphone - 如何在 cocos2d (Kobold2D) CCLayer 上捏合/缩放

我一直在尝试在 cocos2d 中的 CCLayer 上实现标准的捏合/缩放(使用 Kobold2D 手势识别器),但只取得了部分成功。

下面是我的代码,它确实使捏/缩放工作,只要捏点不移动。但是,如果我放大图层上的一个点,然后抬起并移动我的手指以进一步放大另一个点,则图层会瞬间跳跃。如果我从一开始就放大第二个点,它会跳转到图层本来的位置,而不是简单地从它所在的位置平滑缩放。

你能看到我做错了什么还是我错过了一个现有的简单的捏/缩放算法来为 CCLayers 完成这项工作?

注意:我为 ignoreAnchorInPosition 保留了默认 (YES) 值。另外,一开始 self.scalePrePinch = 1.0f

0 投票
3 回答
259 浏览

layout - 跨多个 CCScene 共享通用页眉和页脚 CCLayers 并使其可更新

在我的 cocos2d 游戏中,我需要共享一个通用的页眉和页脚,它将出现在每个游戏层上。

页眉包含现金和精灵之类的东西——而页脚包含用于在不同游戏场景之间移动的 CCMenuItem 按钮。

页眉/页脚出现在比当前场景/图层略高的 Z-index 上,因此它出现在显示的所有内容之上。

例如,标头可能如下所示:

现金:5,000 美元

例如,页脚可能看起来像带有精灵按钮的 CCMenu,如下所示:

主页 | 市场

这将被视为一个平显系统。

现在,我尝试以类似的方式将 HUD 添加到每个场景中;

但是,它会导致断言错误。

* -[CCMenuItemSprite addChild:z:tag:] 中的断言失败 ...

这是因为在不同的场景中无法再次添加 HUD。这是我对 cocos2d 的真正挫败感。

到目前为止,我能够解决这个问题的唯一方法是BaseScene拥有一个HUD作为 CCLayer 的,然后我使用 NSNotifications 加载所有后续的 CCLayer。

代码如下;

标头本身非常复杂,但简单来说我有一个 CCLabel,如下所示:

这很好用,我可以在游戏的所有不同部分之间移动,并且页眉/页脚在所有场景中都是通用的。

但是,使用 NSNotifications 更改节点让我非常头疼,即我似乎无法更改 HUD 内的标签 (lblCash),而且我不知道如何解决这个问题。

例如,如果我点击减少我的现金的 CCMenuItem,HUD 标签永远不会更新。

为了解决这个问题,我使用另一个 NSNotification 来解决这个问题。除了有时我需要多个 NSNotifications(更改标题、刷新页面或其他)并且我最终会出现断言错误,因为我无法重新发送内容。

有时我有一个 NSNotification 来更新标头,然后是另一个 NSNotification 直接将节点重定向到我要呈现的另一个节点;这又会导致断言错误。

我觉得整个事情正在变成一团糟的 NSNotifications,这让我对 cosos2d 感到非常沮丧。

我试过了:

使基础场景移除 HUD(和她所有的孩子)并重新添加它。这会导致断言错误,并且似乎不可能做到。我可能编码错了

尝试投射 BaseScene/Layer 并使用标签抓取 HUD 并以这种方式更新标签。

IE,

什么都不做。(基础层/场景和 hud 层都有一个标签)。

也不行,

我认为我不能进行强制转换的原因是因为 NSNotifications 改变了上下文。

这整件事让我对 cosos2d 感到非常沮丧。

我想要的只是很多场景中的通用页眉/页脚,我希望能够更新页眉的标签而不会大惊小怪。

鉴于此,我如何共享一个通用的页眉/页脚 CCLayer 并使页眉/页脚内的元素可更新?

有没有更简单的方法可以做到这一点,而无需到处都有大量的 NSNotifications?

感谢。

0 投票
1 回答
190 浏览

cocos2d-iphone - 当 UIButton 在 cocos2d CCLayer 中时,如何确定 UIButton 拖动完成?

我有一个 cocos2d CCLayer 类,它既有 CCSprites 又有 UIButtons。我希望玩家能够在屏幕上触摸和拖动 UIButtons,当手指松开时,我想执行一些操作。

这是我创建 UIButton 并添加到图层的代码片段 -

我可以在 cocos2d 层内移动 UIButton。我的问题是,我怎样才能知道手指何时从 UIButton 释放?

PS/我阅读了 Ray Wenderlich 在 cocos2d 中关于 UIView 的教程以及 Steffen Itterheim 的 Learn Cocos2d 游戏开发,但它们都没有涵盖如何管理对 CCLayer 内的 UIKit 元素的触摸,或者我认为。

0 投票
2 回答
1872 浏览

ios - Cocos2D:如何在不同类之间发送事件

我读过的大多数教程只解释了 HelloWorld 类中的 Cocos2D 示例,但是当我开始构建一个简单的游戏时,我需要知道如何将事件发送到不同的类,并让它们在发生时做出响应.

我有 GameSceneLayer,一个 CCLayer 类,它加载到我不同的 Sprite 的 CCLayers 中:

但是,当我的 MainMenu CCLayer START 精灵被触摸时,我希望它从 Player CCLayer 的 PLAYER 精灵中生成。

我猜我需要一个 GlobalVariables.h 类似的东西:

因此,当按下 START 精灵时,它会将 gameStart 更改为 1,并且在 PLAYER 精灵中的某处有

但是我不确定如何设置代码,以便播放器精灵始终在寻找该信息。

0 投票
0 回答
1211 浏览

uiview - 如何将 UIView 与 CCLayer cocos2d 一起使用?

我正在 cocos2d 中使用 CCVideoPlayer 播放一个短视频,最后我正在捕获视频的最后一帧,并使用 UIView 在屏幕上显示它,因为尝试在 CCLayer 上绘制它会使图像显示出来颜色略有不同。我想这是因为在 cocos2d 中绘制事物的方式与在 UIView 上绘制的方式不同。所以我需要一些方法来使用 UIView 将图像保留在屏幕上,并且我需要能够在这个视图之上绘制精灵等。所以我的问题是,有没有办法让 CCLayer 透明,以便仍然可以看到包含图像的 UIView,然后使用 CCLayer 在图像顶部绘制?(PS我用的是cocos2d v1.1.0-beta2b)

0 投票
1 回答
1148 浏览

cocos2d-iphone - 如何在现有图层上创建下拉菜单效果?Cocos2d

我的主图层带有一个选项按钮,当我按下按钮时,我在 CCLayerColor 图层上调用 pushScene,该图层只有屏幕大小的一半,因为我希望它像一个下拉菜单,但是当它出现时随着我设置的过渡,背景层变黑。我希望背景层始终保持可见。我很确定背景层正在被释放。

0 投票
1 回答
161 浏览

uinavigationcontroller - 在 CCLayer 中添加 UINavigationController

我正在尝试创建一个使用 cocos2d 作为主屏幕的应用程序,以及一个 UINavigationController 用于一些表和信息的应用程序。我使用此代码尝试将 UINavigationController(设置)推送到视图中

此代码在 CCLayer 中执行,Settings 是 UINavigationController。

我收到这个错误

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'

这是否意味着我不能将 NaviagationController 推送到 CCLayer 中?请帮忙。

0 投票
3 回答
3278 浏览

cocos2d-iphone - 如何将 CCLayerColor 及其子项淡化为给定的不透明度?Cocos2d

我试图弄清楚如何将图层及其子级淡化为给定的不透明度。这就是我正在做的事情。

但这似乎没有任何作用。如果我删除背景精灵以查看我设置图层的蓝色然后构建它,那么蓝色背景会完全褪色。所以我的问题是,为什么淡出所有图层子级不起作用?