3

我有一個名爲Projectile的類(它繼承自Cocos2D CCSprite類,但我懷疑這與問題有關)。它所包含的是一個名爲'type'的int,我已將其作爲一個屬性。發生int屬性的無法識別的選擇器

Projectile.h:

@interface Projectile : CCSprite{ 

int type; 

} 

@property int type; 

@end 

Projectile.m:

#import "Projectile.h" 

@implementation Projectile 

@synthesize type; 

@end 

現在,所有我想要做的是設置在主類我的遊戲的性質,像這樣:

-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{ 

Projectile *newProjectile = [CCSprite spriteWithSpriteFrameName:@"Bullet.png"]; 

newProjectile.position = spaceShip.position; 

newProjectile.type = kLaser;    // defined earlier as #define kLaser 1 


[objectsSpriteSheet addChild:newProjectile z:kProjectileZValue]; 

[projectiles addObject:newProjectile]; 

return YES; 

} 

我每次運行它,它崩潰的newProjectile.type = kLaser行:

-[CCSprite setType:]: unrecognized selector sent to instance 0x1ed82f10 

看起來好像太簡單了,弄錯了,Xcode清楚地知道屬性,因爲它會自動完成它,並且不會給我一個錯誤說它不存在。

我也得到了非常相似的代碼執行完美。

如果有人可以對此有所瞭解,我會非常感激,我確信我可以用另一種方式繞過它,但我想了解爲什麼這可能不起作用。

回答

4

嗯,是的,當你說Projectile *newProjectile = [CCSprite spriteWithSpriteFrameName:@"Bullet.png"];時,newProjectile將是CCSprite類型的對象,它沒有該屬性。

+0

你確實是對的,多麼愚蠢的錯誤!非常感謝你! – SteveB

+0

有趣的是:即使是分析版本也無法解決這個問題。 – LearnCocos2D

+0

是的......對於任何與項目設置或組織者無關的東西,即編碼:),我現在使用另一種工具。它發現了很多分析不足的問題,而不是很有趣。 – YvesLeBorg

1

我不知道,但只是試試這個:

Projectile *newProjectile = (Projectile *)[CCSprite spriteWithSpriteFrameName:@"Bullet.png"]; 
2

此行導致該問題:

Projectile *newProjectile = [CCSprite spriteWithSpriteFrameName:@"Bullet.png"]; 

將其更改爲:

Projectile *newProjectile = [Projectile spriteWithSpriteFrameName:@"Bullet.png"]; 

您正在創建的實例CCSprite並將其分配給它的子類。 CCSprite類沒有類型的屬性。

+0

謝謝,你是對的。我選擇Levi的答案是他第一個正確的答案。 – SteveB

+0

@ user1606549:高興:) –

相關問題