问题标签 [ccspritebatchnode]

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

cocos2d-iphone - 剪辑添加到 CCSpriteBatchNode 的 CCSprite

我正在用这段代码剪辑我的精灵:

然后像往常一样创建精灵,将 sprite.contentSize 属性调整为我需要的任何内容:

它按预期工作!

问题...

将其添加到 CCSpriteBatchNode 时,它​​不会剪切精灵……它会显示精灵,但不会剪切它。

有人可以帮我解决这个问题,我到处都用谷歌搜索,没有答案。

我还使用了Steffen Itterheim的 ClippingNode 类,但我也遇到了将它添加到 CCSpriteBatchNode 的问题。

任何帮助将不胜感激。

0 投票
1 回答
1856 浏览

xcode - Cocos2d Spritesheet 未加载(spriteWithSpriteFrameName)

我是 cocos2d 的菜鸟,在开发过程中不断学习。我在 cocos2d 文档和 Ray Wenderlich 教程中阅读过,我尝试创建精灵表,但到目前为止,我无法从我创建的精灵表中加载任何我的精灵。当我直接使用普通的 CCSprite spriteFromFile: 时,精灵显示得很好。无论如何,我在 Zwoptex 中创建了 spritesheet。我选择 png 文件和坐标作为 Cocos2d .plist。将两个文件(png 和 plist)拖放到我的项目资源组中,并在 init 方法中编写以下代码。

我已经检查了文件的名称,大小写,甚至多次重新制作了spritesheet,但是cocos2d仍然无法加载pieceB1.png,即使它在plist和png中。这是 plist 文件的屏幕截图:

在此处输入图像描述

我得到的错误:

谢谢。

0 投票
0 回答
185 浏览

ios - 如何从 GLuint 中检索相应的纹理名称?

编辑 5:优化级别构建设置:

构建设置

编辑 4:我试图将构建配置全部更改为“调试”,然后运行“测试”。奇怪的是,它并没有崩溃大约 20 次(我一直在加载和卸载具有不同资产的各种 GameScenes)。在第 21 次(即使在统计上不相关),我正要考虑它可能不再崩溃但它崩溃了。摘要仍然不可用,所以我想知道我做得对还是有其他问题。这是构建配置和崩溃报告:

配置

仍然会发生什么

编辑 3:重要的是,这个错误只发生几次,比如 6/7 中的 1 次运行,所以我发现很难隔离它。

我在理解哪个纹理让这个 NSAssert 失败时遇到了一些严重的问题。我尝试了几种方法,但都没有奏效(或者很可能只是我有点太愚蠢了:))。

在调试器中,我可以看到 GLuint 信息。在互联网上阅读我发现这是一种引用框架(一种指针)的方法。

我认为应该有一种方法可以从 batchNode plist 文件中检索框架名称,并且想知道这个 GLuint 编号是否可以以某种方式对应于 plist 文件中框架的顺序。

我尝试了这些方法,但它们捕获了所有情况:

编辑:我知道这有点疯狂,但我尝试在 CCTexture2D 中初始化 fileName,因为我似乎无法正确初始化它:

上面的一个是我能够修改的唯一 initWithString 。我无法在另一个中修改 fileName 属性:

编辑 2: 我试图将 fileName 分配为:

但它仍然给我提供了不可用的摘要,如此处报道的:

持续存在的问题

该问题似乎发生在动画更新期间的 setTexture 中,但文件名似乎最初是错误的。

这就是我在 CCTexture2D 中声明该属性的方式:

0 投票
1 回答
359 浏览

ios - 在 cocos2d 中使用 CCSpriteBatchNode 添加精灵流?

所以我创建了一个名为 Berries 的类,它扩展了 CCSpriteBatchNode。浆果基本上就像我游戏中的硬币,如果“碰撞”,则会增加得分值。这是我在 CCSpriteBatchNode 的 Berries 类中的代码:

numBerries 是我制作的 int。我试图找出所有三个 CCSpriteBatchNodes 中的浆果数量,这样当我创建一个 detectCollision 方法时,我可以在 for 循环中使用它。

有任何想法吗?

0 投票
1 回答
158 浏览

cocos2d-iphone - 为什么 Cocos2D 更新仅在从子级向父级的 CCSpriteBatchNode 添加精灵时触发

我不明白为什么会发生以下情况,我希望这里的人能解释一下。

我有一个 GameLayer (CCLayer) 类和一个 Food (CCNode) 类。

在 Gamelayer 类中,我创建了一堆具有 sprite 作为属性的食物对象。我想将这些精灵添加到 CCSpriteBatchNode。

当我使用上面的代码时,精灵都显示在屏幕上,但不会移动。(他们应该是因为我在食品类中安排了更新(见下文),并且在此更新中食品对象的位置发生了变化)

但是,如果我将添加精灵到批次的代码从游戏类移动到食物类,那么改变位置的更新确实有效并且食物在屏幕上移动。但为什么?

所以这给出了:

我真的看不出打电话之间的区别

来自食品类或:

来自“父”GameLayer

0 投票
1 回答
457 浏览

xcode - 通过标签值将动画添加到现有的 CCSprite

我已经为一个角色创建了动画..需要帮助通过它的标签值将此动画添加到现有角色..到目前为止,我在网络上检查..所有人都在创建新CCSprite的来制作这个动画..但我需要它来添加这个动画到现有的 Sprite..existing Sprite 的标记值为 20.. 它在创建新的时动画效果很好..在CCSprite此先感谢..

0 投票
2 回答
6178 浏览

cocos2d-iphone - Cocos2d-x:如何优化 100 个相同精灵的内存?

我的任务是在帧中绘制一个精灵 100 次。例如,我需要画一行由一个精灵“sprite.png”组成。我这样做:

这就是问题所在。我只为一个精灵分配内存 100 次,但我不知道如何以不同的方式进行。我该如何优化它?Cocos2d 中是否有一种方法可以使用坐标(x 和 y)绘制精灵,但不为每个相同的精灵分配内存?

0 投票
0 回答
168 浏览

arrays - 在 cocos2d 中向屏幕添加精灵数组的问题?

对于我在 cocos2d 中的游戏,我试图在屏幕上添加一组不断向左移动的精灵。当我将该方法添加到我的更新方法时,它没有按预期工作。我首先设置了一个批处理节点。

0 投票
0 回答
243 浏览

cocos2d-iphone - CCSpriteBatchNode 应用着色器?

我正在使用 cocos2d 2.0 将着色器应用于我的 BatchNode。

我更新了 ccV3F_C4B_T2F 结构来保存新的制服,所以它现在看起来像这样:

typedef 结构 _ccV3F_C4B_T2F {

} ccV3F_C4B_T2F;

我在 CCspritebatchnode 的 plist 中添加了一个新的属性值,这是我想要传递给着色器的值。所以当batchnode获取每帧的偏移量、颜色矩形等时。它还将获得我需要传递的值。那行得通。

然后我从 Batchnodes plist 中获取值并修改“updatetransform”以接收这些值。所以它看起来像这样:

我将 CCSpriteBatchNode 子类化并应用了着色器:

顶点着色器:

片段着色器:

顶点着色器获取“属性 vec2 a_newcoords;” 正确,但我无法从片段着色器访问“变化的 v_newcoords”。

有人知道我可能做错了什么吗?

0 投票
1 回答
104 浏览

ios - CCSpriteBatchNode 在 15k 左右停止添加子节点

我正在使用 CCSpriteBatchNode 基本上一次画一条线(使用 1x1 样本)。我需要这样做,因为用户正在实时控制线条的位置(它不是绘图应用程序,但我认为我正在做的事情是可比的)。

事实证明,当我向 batchNode 添加 15-16k 个孩子时,它会停止注册新的孩子。基本上,好像笔用完了墨水!

我在 cocos2d 代码中浏览了一下,但似乎没有任何问题。它只是停止注册新的子节点。有人知道为什么吗?