精灵没有绘制/出现在屏幕上,Cocos2d

时间:2015-02-24 19:26:35

标签: cocos2d-iphone

我在使用我当前的方法让我的精灵出现在屏幕上时遇到了麻烦。我已经在屏幕上看到了多个精灵,但是我以不同的方式添加了这个新精灵,因为我将在稍后操作它(处理不同的交互等)。但是当我运行程序时,我不明白为什么它不出现在屏幕上。我试着没有运气就改变了z顺序,但这可能是因为精灵没有像其他人那样在init方法中添加,所以z顺序与后台相比并不影响它,而是在init方法中创建的。无论如何,为什么它不会在屏幕上绘制有任何线索?

- (void) addMonster {

CCSprite * monster = [CCSprite spriteWithImageNamed:@"Ghost.png"];

// Determine where to spawn the monster along the Y axis
CGSize viewSize = [CCDirector sharedDirector].viewSize;
int minY = monster.contentSize.height / 2;
int maxY = viewSize.height - monster.contentSize.height/2;
int rangeY = maxY - minY;
int actualY = (arc4random() % rangeY) + minY;

// Create the monster slightly off-screen along the right edge,
// and along a random position along the Y axis as calculated above
monster.position = ccp(viewSize.width + monster.contentSize.width/2, actualY);
[self addChild:monster];

// Determine speed of the monster
int minDuration = 2.0;
int maxDuration = 4.0;
int rangeDuration = maxDuration - minDuration;
int actualDuration = (arc4random() % rangeDuration) + minDuration;

// Create the actions
CCActionMoveTo * actionMove = [CCActionMoveTo actionWithDuration:actualDuration
                                                        position:ccp(-monster.contentSize.width/2, actualY)];
CCActionCallBlock * actionMoveDone = [CCActionCallBlock actionWithBlock:^(CCNode *node) {
    [monster removeFromParentAndCleanup:YES];
}];
[monster runAction:[CCActionSequence actions:actionMove, actionMoveDone, nil]];   
}


//The call back function
-(void)gameLogic:(CCTime)dt {
[self addMonster];
}



- (id)init{
// Apple recommend assigning self with supers return value
self = [super init];
if (!self) return(nil);


if( (self = [super init]) ) {

    self.userInteractionEnabled = YES;

//How often a new ghost gets produced
    [self schedule:@selector(gameLogic:) interval:1.0];

//还有一些与此无关的代码继续......

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

我添加的精灵确实出现了,但是当我离开现场并回来时,他们不会出现。据我所知,sprite需要在init方法中添加。当你在稍后阶段添加它们时(在我的情况下)它们只出现一次。

我仍在寻找一种解决方案,以便在比init方法更晚的阶段添加精灵,并且不止一次出现。

也许这个答案可以帮助您找到解决方案。