2013-08-04 52 views
0

嘿,我想知道是否有办法告诉当前分配给特定精灵帧的名称。 我想要做的是有一个,如果类似Cocos2d当前精灵帧检测

if(CGRectIntersectsRect([Player1 boundingBox], [Player2 boundingBox] && Player1.frame == Player2.frame){ 
    //Do something 
}else if(CGRectIntersectsRect([Player1 boundingBox], [Player2 boundingBox] && Player1.frame != Player2.frame{ 
    //Do something else 
} 

声明不幸的是我不知道该怎么做到这一点的正确方法是。我可以得到当前精灵帧的实际名称吗?即。 @“Frame1.png”,所以我可以将它与它与帧名称相冲突的精灵进行比较? 也抱歉,如果我使用框架错误的术语,我的意思是像精灵表,即精灵的图像。 spriteWithSpriteFrameName。

回答

0

我不确定它是否是CCSprite的属性,你将不得不检查文档,但是一个简单的解决方案是使用继承和继承CCSprite。

添加你想要的属性,所以imageName属性,改变你的CCSprite分配使用新的子类精灵,然后你就可以访问属性。不要忘记进口。

此外,您应该使用CGRectEqualToRect (CGRect rect1, CGRect rect2);检查是否相等。根据你的精灵,你可能需要正确的碰撞检测,以避免CGRect方法不会执行的透明度碰撞检测。

希望这会有所帮助。

0
CCSpriteFrame* frame = sprite.displayFrame; 
NSString* frameName = frame.textureFilename; 

我不确定这是否会返回单个帧名称。如果它只返回阿特拉斯纹理文件名,那么你运气不好。您必须修改CCSpriteFrame代码以包含框架名称属性。