问题标签 [ccnode]
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.
iphone - 移动简笔画、锚点、动画或其他东西……?
好的,所以我正在目标 c 中使用 cocos2d 制作一个带有简笔画的游戏......需要对不同的事物进行动画处理,所以请给我一个建议,告诉我完成这些事物的运动的最佳方法是什么:
主角-他是左下角的弓箭手,不会四处走动,只是他会移动上半身,因为您需要更改拍摄角度的角度...
敌人 - 成群结队的简笔画,它们具有碰撞检测功能,并在被箭头精灵射击时死亡。
我应该如何进行 1 和 2 移动?我应该掌握锚点并使用它们吗?(我真的很讨厌愚蠢的锚点,它们很难开始工作......但如果它们更好,我会使用它们)或者制作大量动画,或者是否有另一种更简单的方法可以将许多精灵组合成一个动作?
cocos2d-iphone - cocos2d : 如何克隆 CCNode 层次结构
我尝试克隆 CCNode 层次结构,问题是我需要按类型重置和设置所有变量,我有办法更自动地做到这一点吗?
基本上我想要做的是: - 存储一个 CCNode*(有一些孩子,例如在 Pos 10-10 的图像,以及在 Pos 100-50 的带有文本“测试”的标签);- 然后克隆它,以获得具有相同默认值和子节点的新 CCNode*。
我需要复制它,因为在它们被修改之后,就像一个节点的模板,在获得自定义值之前。
如果您知道一种简单的复制方法,并设置所有层次结构(也具有正确的类型),并且每种类型都没有大的 if/else 语句,那将对我有很大帮助^^
谢谢
cocos2d-iphone - CCNode 递归 getChildByTag
据我了解,该CCNode::getChildByTag
方法仅在直接子代中搜索。
但是有没有办法在所有后代层次结构中通过标签递归地找到 CCNode 的子节点?
我正在从 CocosBuilder ccb 文件加载 CCNode,我想检索只知道它们的标签的子节点(而不是它们在层次结构中的位置/级别)
cocos2d-iphone - cocos2d中非矩形CCNode的轮廓(笔画)
我需要动态创建这样的大纲:
不是针对一个 CCSprite,而是针对联合在一个 CCNode 中的多个动画 CCSprite。我在想:
- 将 CCNode 的内容复制到纹理中(如
canvasBitmapData.draw(sourceDisplayObject)
在 AS3 中) - 使用生成的纹理创建 CCSprite
- 给精灵着色以勾勒颜色并放大一点
- 将精灵放在节点中其他精灵的后面
我不知道如何执行第 1 步。也许在第 3 步中围绕纹理的不透明像素而不是色调比例绘制“真实笔触”会更快?
cocos2d-iphone - Cocos2d 中的旋转裁剪节点
我在这里使用剪辑节点:http: //www.learn-cocos2d.com/2011/01/cocos2d-gem-clippingnode
ClippingNode.h
ClippingNode.m
但是,我需要剪辑一个旋转的 CCNode。关于如何完成这样的任务的任何想法?
objective-c - 从 CCNode 继承的 init 方法
我有一个关于在继承自 CCNode 的 Player 类中创建自定义初始化方法的问题。不确定我是否需要改为采用不同的路线并创建类方法:
+ (id) addSprite: (CCSprite*) sprite andSpriteBatchNode: (CCSpriteBatchNode*) spriteBatch;
更多类方法....
在Player
课堂上,我有一个指定的 init 方法,以及一些方便的 init 方法。
- (id) init;
- (id) initWithSpriteBatchNode: (CCSpriteBatchNode*) spriteBatch;
- (id) initWithSprite: (CCSprite*) sprite andSpriteBatchNode: (CCSpriteBatchNode*) spriteBatch;
//指定初始化方法
当我在我的 Level 类中实例化这个类时,我无法直接调用我的任何自定义 init 方法。我要做的是:
Player *player = [Player node];
[player initWithSprite: sprite andSpriteBatchNode: spriteBatch;];
//不确定这是否正确或是否会泄漏内存
我认为任何一个都应该工作,因为它们只是在实例级别上做同样的事情,其他方法在名称上。
请指教。
cocos2d-iphone - 调用 stopAllActions 后 CCCallBlock 保留的 CCNode
我有一个实用函数,用于在圆形路径中移动 CCNode,无论是完整的圆还是部分圆。
该函数工作得非常好,但是如果我希望 CCNode 不断地跟随路径,我通过传入的 Block 来完成,最终调用相同的函数(有点递归,但不是真的)。
我发现的问题是,由于该函数在内部使用块,因此即使在调用 stopAllActions 或 removeFromParentAndCleanup:YES 之后,正在运行操作的 CCNode 也会保留,即使 CCNode 已被清理并从屏幕,它保留在内存中并且没有被释放。这似乎会影响性能,即使节点没有显示,因为 CCNode 和其他依赖项仍然(不知何故)在 cocos2d 系统中。
这是移动 CCNode 的函数:
您会注意到节点移动经过的弧被分成 10 度的步长。这样做是为了在不编写 CCActionInterval 子类的情况下获得圆周运动,但这意味着使用块或选择器来保持运动运行直到完成。
现在,为了让我的 CCNode 不断地移动一个完整的圆圈,我使用以下方法调用此函数:
我尝试了一些不同的事情,比如根本不传入一个块,但是除了根本不使用该函数之外,没有什么能阻止保留。
据我所知,在 XCode 文档中阅读,我们有:
“如果在方法的实现中使用块,对象实例变量的内存管理规则会更加微妙:
如果通过引用访问实例变量,则保留 self;如果您按值访问实例变量,则会保留该变量。”
所以这告诉我,通过以我的方式在我的函数中使用块导致隐藏保留。
稍后调用 stopAllActions 不会触发释放。
这对我有用的唯一方法是,如果在我节点的 cleanup() 消息中添加[self release]
.
我不喜欢这样,因为它与执行保留的代码分离。
我的一个新想法是以某种方式将其重写为新的 CCActionInterval 子类,但我仍然不确定这是否能解决问题。
有什么建议么?
iphone - Cocos2d - 如何相对于彼此缩放两个 CCNode
我在 Cocos2d 中有两个 CCNode,我想动态地相互同步缩放。两个 CCNode 都是后台节点。从视觉上看,一个 CCNode NodeA 在 y 方向上位于另一个 CCNode NodeB 之上。但是当我在下面的代码中同时缩放两个节点时:
编辑#1 -
节点 B 是 CCLayer、HUDLayer 的一部分。HUDLayer 无法扩展,但 HUDLayer 中的 NodeB 可以扩展。所以代码看起来像
结束编辑#1
编辑#2
结束编辑#2
编辑#3
我发现这篇文章,其中一个答案谈到了将 CCNode 的 relativeToAnchorPoint 属性设置为 YES。我在 Google 上找不到如何执行此操作。有谁知道如何设置 relativeToAnchorPoint?
结束编辑#3
NodeA 在 y 方向下降到 NodeB 之下。所以这带来了几个问题:
debugging - iOS, cocos2d。使用类别调试有关当前节点、图层、场景的信息?
我找到了这段代码:
它显示了一个关于当前 UIViewController 类的标签。
cocos2d如何实现类似的东西?子类化很容易,但类别很难。如果我对现有项目使用子类化,那么它会导致很多文件发生很多变化。
cocos2d-x - cocos2d-X中CCNode的CCTouch事件
我试图搜索但找不到所需的答案,谁能告诉我 CCNode 的 CCTouch 事件是什么?因为我们有 CCTouchBegan、CCTouchMoved 和 CCTouchEnded 用于 CCLayer