问题标签 [ccscene]

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 回答
364 浏览

cocos2d-iphone - cocos2d场景释放和ccb节点

我有一个简单的方法CCScene,它只包含一个从 CocosBuilder 模板创建的节点[CCBReader nodeGraphWithFile:]

到目前为止,我没有dealloc在场景的方法中释放 ccb 节点,因为我希望它会自动释放。但是在分配分析器中,我注意到如果我在CCDirector.

如果我实际上是场景方法release中的节点,这个内存泄漏就会消失。dealloc

为什么我需要释放节点,尽管我没有保留/初始化它?有什么我误解了吗?

0 投票
1 回答
145 浏览

replace - 第二次更换相同的 CCScene 后游戏崩溃

这是一个有点简单的问题,但我无法弄清楚。

1-> 应用程序启动(带有 MainMenu 场景)

2-> 开始(子关卡场景被替换)

3->选择第一级(Level1Scene被替换。游戏开始。)

4-> 返回主菜单。(MainMenu 场景被替换)

5-> 开始(子关卡场景被替换)

6-> 选择第一级

7-> 崩溃。

box(32842,0x3f5c9d98) malloc: * 对象 0x4bed44 错误:释放对象的校验和不正确 - 对象在释放后可能被修改。*在 malloc_error_break 中设置断点进行调试

当我将场景 a 替换为 b 时,a 是否已发布?

据我所知,只有 pushScene 将场景保存在内存中。

场景和图层是自动释放对象。调用 replaceScene 时必须释放。(如果在替换场景时释放了先前的场景。)

0 投票
1 回答
153 浏览

ios - ViewController 访问 CocosBuilder 创建的 CCScene 中的实例方法?

我举个例子来说明:

例如在 CocosBuilder 中,我创建了一个Scene.ccbi 及其自定义类Scene

Scene header中,我定义了一个方法:

AppDelegate/ViewController中,我调用 CCBReader 来创建 CCScene:

即 Scene.m 现在有它的实例。

至此,AppDelegate/ViewController 如何访问 Scene 的实例方法呢?例如,在 ViewController 内部:

谢谢!

0 投票
2 回答
394 浏览

cocos2d-iphone - 在一个场景中 CCLayer 之间的通信

我有 2 个 CCLayer 需要在单独的 .m 文件中相互通信

  • Level1.m (CCScene with Level1 CCLayer) - 保存平铺地图和玩家精灵
  • HUDLayer.m(链接到 Level1.m 的顶部) - 保存所有按钮

如何在 HUDLayer.m 中获取以下代码以与 Level1.m 中的玩家精灵对话?

请帮助我已经坚持了好几天了。至少如果有人能指出我正确的方向。谢谢!

0 投票
0 回答
57 浏览

iphone - 为什么我不能从 HUD 层移动 iAd?

我有一个包含 iAd 的 HUD 层,该层具有将广告移出屏幕的功能。我使用此代码将 HUD 层添加到我拥有的场景之一:

hudLayer 是 iAd 类文件名。

现在,当我转到另一个场景时,即使我在另一个场景中添加了 HUD 图层,它仍然存在。我尝试通过使用以下代码移动 iAd 的位置来解决此问题:

在场景中,我添加了 HUD 层,我有一个按钮,该按钮调用一个将场景切换到另一个场景的函数,并使用以下代码调用上面的函数:

该函数被调用,但 iAd 没有移动。我尝试从 HUD 图层 init 函数调用相同的函数,并且 iAd 被移动,但在另一个场景调用它时没有移动。

0 投票
2 回答
246 浏览

objective-c - Cocos2d 场景加载方向错误

我正在尝试在一些 UIKit 视图之上制作 cocos2d 场景。我知道 cocos2d 2.0 CCDirector 是 UIViewController 的子类,因此我可以将其添加为子视图。

我已经编写了这个函数来处理在我的 appDelegate 中切换到一个场景(目前这是我的 MainWindow.xib 的代表http://www.raywenderlich.com/4817/how-to-integrate-cocos2d-and-uikit) :

所以我从这段代码中遗漏了很多东西。但是有了这个,我得到了一些相似的场景来加载http://i.stack.imgur.com/pubWE.png

我的问题是:

1:如果我朝着正确的方向前进

2:如果是,下一步是手动调整场景的方向吗?

2.1:我该怎么做:)

0 投票
0 回答
99 浏览

debugging - iOS, cocos2d。使用类别调试有关当前节点、图层、场景的信息?

我找到了这段代码:

关联

它显示了一个关于当前 UIViewController 类的标签。

cocos2d如何实现类似的东西?子类化很容易,但类别很难。如果我对现有项目使用子类化,那么它会导致很多文件发生很多变化。

0 投票
0 回答
187 浏览

iphone - 可以在 CCTransition 期间替换 CCScene 吗?

replaceScene:使用 a调用CCSceneon CCDirectorwhich is during aCCTransition会导致在dealloc使用的任何场景上都不会被调用,此外,在此操作之后不会显示任何场景。

这是示例项目的链接

获得这种行为的最短方法是这样的方法(我的意思是重现问题):

我的问题是:是否有任何可行的方法来替换CCTransition正在执行的场景CCDirector

我已经实现了一个委托回调,CCDirector通知我结束场景替换,但是如果我在CCTransition.

如果答案是否定的,是否有 cocos2d-iphone 方法来实现下述目标?

本来这个问题是在我想在applicationDidEnterBackground(作为后台任务)或者的时候添加“加载场景”的时候出现的applicationWillEnterForeground,但是我意识到这与后台执行无关。我的最终目标是在游戏等待调用 Game Center 身份验证处理程序时提供无缝的用户体验,并且从后台唤醒应用程序一开始就显示“加载场景”就足够了(不仅阻止用户交互可以通过多种方式完成,但不会向用户显示以前的游戏 UI)。然而,这个解决方案很容易受到上述问题的影响——如果用户在场景转换期间点击主页按钮,他将在从后台运行游戏后得到一个非常奇怪的屏幕。

编辑:经过更多研究后,我没有找到任何令人满意的解决方案来替换场景CCTransition,但是,上述问题通过不调用而是通过向可见replaceScene添加“加载”来解决,正如@LearnCocos2D(感谢Steffen)所建议的那样。这并不完美,因为在场景转换过程中添加一个孩子在出现奇怪结果时仍然会有一些狭窄的窗口(在运行时间的意义上),但它比替换场景要好得多。我想提一下,它只在我在 3GS 上测试我的游戏时才关心,因为较新的设备明显更快,并且很难重现在比 3GS 更快的东西上单击“主页按钮”的问题。CCLayerCCSceneCCTransition

0 投票
2 回答
140 浏览

cocos2d-iphone - 如何关闭 cocos2d-iphone 中其他层中显示的层

我有一层叫alayer,还有一个叫abutton的按钮,当点击按钮时,另一个叫blayer的层会显示在alayer中,而不是replaceScene,请看下面的代码,

图层.m

blayer.m 有一个叫做 bbutton 的按钮和一个叫做 bstring 的字符串值,我想点击 b 按钮,它会关闭 blayer(从 alayer 中删除 blayer),并将字符串值 bstring 传递给 alayer,请看下面的代码,

谢谢。

附言。我可以使用 NSUserDefault 来传递字符串值,但我认为这是一种不好的方法,还有另一种传递值的方法吗?

0 投票
2 回答
333 浏览

ios - 呈现 UIViewController 时如何替换 CCScene?

我有两个CCScenes,我们称它们为 A 和 B。当我在现场 A 时,我会展示一个UIViewController带有视频播放器的实例。然后我想从那个 UIViewController 移动到场景 B。这就是我这样做的方式:

我所需要的只是在解雇我的UIViewController. 但不幸的是,它总是把我带到场景 A 片刻,然后才呈现场景 B。据我了解显示UIViewControllerCocos2D,以便它只能在 viewController 从CCDirector. 所以我需要找到一种CCScene在 viewController 仍然打开时异步替换的方法。有任何想法吗?