Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 重复使用已设置动画的CCSprite_Ios_Cocos2d Iphone_Ccsprite_Spritebuilder - Fatal编程技术网

Ios 重复使用已设置动画的CCSprite

Ios 重复使用已设置动画的CCSprite,ios,cocos2d-iphone,ccsprite,spritebuilder,Ios,Cocos2d Iphone,Ccsprite,Spritebuilder,我在SpriteBuilder上创建了一个新的.ccb文件,在那里我创建了一个带有PhysicEnabled和一些物理属性的动画CCSprite。在某一点上,我想画一个菜单上的动画CCSprite。我不想复制整个.ccb文件,因为现在我不需要物理部分,我只想复制CCSprite和动画,这是一组关键帧。实现这一点的最佳方法是什么?您只需要在Xcode中创建一个新类,然后为该类创建一个新对象并将其添加到菜单中。我将解释以下步骤: 转到SpriteBuilder中的新.ccb文件并选择CCSprite

我在SpriteBuilder上创建了一个新的.ccb文件,在那里我创建了一个带有PhysicEnabled和一些物理属性的动画CCSprite。在某一点上,我想画一个菜单上的动画CCSprite。我不想复制整个.ccb文件,因为现在我不需要物理部分,我只想复制CCSprite和动画,这是一组关键帧。实现这一点的最佳方法是什么?

您只需要在Xcode中创建一个新类,然后为该类创建一个新对象并将其添加到菜单中。我将解释以下步骤:

转到SpriteBuilder中的新.ccb文件并选择CCSprite的内容节点。这取决于您创建的.ccb文件类型、场景、精灵、节点。。。然后转到代码连接并为自定义类选择一个名称,例如MyAnimatedSprite

现在转到Xcode,然后在项目中创建一个新文件,类型为CCNode,并将其命名为“MyAnimatedSprite”

现在,最后一步是将此精灵添加到菜单中

您之前必须在menu.ccb文件中添加一个物理节点,并在.m文件中声明,因为您说过您的精灵已启用物理。如果没有,只需使用sprite builder将其添加到任意位置,然后转到“代码连接”并在“自定义类”下选择“Doc Root Var”,并在本例中调用它“\u physicsNode”

现在转到Xcode中的Menu类,只需使用以下行将sprite类添加到菜单中:

@implementation Menu{

..... YOUR CODE .....
CCPhysicsNode *_physicsNode; //add physics node if you don't have it

}


-(void) didLoadFromCCB{

//create a new object of type MyAnimatedSprite
CCNode *myAnimatedSprite = [CCBReader load:@"MyAnimatedSprite"];

...YOUR CODE....

}

您的菜单中的精灵将完美运行:

在我不想计算任何物理的情况下使用physicsnode不是有点过分吗?您说过您的CCSprite已启用物理功能,因此如果您要将其添加到菜单中,必须有physicsnode,以便您可以添加精灵。否则它将崩溃,但我想禁用它的物理,然后复制动画精灵。难道不可能吗?我知道,你不能删除它们。你可以禁用它们,所以物理存在但被禁用。因此,您需要创建PhysicsNode,使用physics添加精灵,然后通过以下操作禁用物理:myAnimatedSprite.physicsBody.sensor=TRUE;我不知道还有什么其他方法,你可以试着在代码中添加物理节点,假设它是一个简单的对象。