问题描述
- 使用计时器变换ccsprite图片
-
一个图片有10个sprite图片,这些图片不是固定的,我想用计时器实现sprite中两个子图片的变换,下面的代码没实现成功:CCSprite *target = [CCSprite spriteWithFile:@"images1.png" rect:CGRectMake(0, 0, 120, 140)]; // Determine where to spawn the target along the Y axis winSize = [[CCDirector sharedDirector] winSize]; int minY = target.contentSize.height/2; int maxY = (winSize.height/2) - target.contentSize.height/2; int rangeY = maxY - minY; int actualY = (arc4random() % rangeY) ; // Create the target slightly off-screen along the right edge, // and along a random position along the Y axis as calculated above target.position = ccp(winSize.width + (target.contentSize.width/2), actualY); [self addChild:target]; // Determine speed of the target int minDuration = 2.0; int maxDuration = 4.0; int rangeDuration = maxDuration - minDuration; int actualDuration = (arc4random() % rangeDuration) + minDuration; id delayTime1 = [CCDelayTime actionWithDuration:1.0f]; id calFun1 = [CCCallBlock actionWithBlock:^{ //HERE SET BLUE TEXTURE.. [target setTexture:[[CCSprite spriteWithFile:@"image1.png"]texture]]; }]; id delayTime2 = [CCDelayTime actionWithDuration:1.0f]; id calFun2 = [CCCallBlock actionWithBlock:^{ //HERE SET RED TEXTURE.. [target setTexture:[[CCSprite spriteWithFile:@"image2.png"]texture]]; }]; // Create the actions id actionMove = [CCMoveTo actionWithDuration:actualDuration*2.5 position:ccp(-target.contentSize.width/2, actualY)]; id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)]; id sequece = [CCSequence actions:delayTime1, calFun1, delayTime2, calFun2,actionMove, actionMoveDone, nil]; id repeate = [CCRepeatForever actionWithAction:sequece]; [target runAction:repeate];
运作之后,只有一个图片在连续显示。没发生改变。
时间: 2024-08-30 11:26:27