所有。我在这个函数中有一些函数“tetrisl”我想要移动俄罗斯方块精灵:
-(void)tetrisL:(ccTime)dt {
Tetris *s = [[Tetris node]initWithArraySize:4];
[s createL];
for (CCSprite *new in s.tetrisArray) {
[self addChild:new];
id actionMove = [CCMoveTo actionWithDuration:3 position:ccp(new.position.x,0)];
[new runAction: actionMove];
}
[s release];
}
但它不起作用。我想因为我试图在同一个动作中移动不同的精灵。我该如何解决?感谢
这是俄罗斯方块类
@interface Tetris : CCNode {
NSMutableArray *tetrisArray;
Blocks *tempBlock;
}
@property (nonatomic, retain) NSMutableArray *tetrisArray;
@property (nonatomic, retain) Blocks *tempBlock;
-(id)initWithArraySize:(int)sz;
-(void)createL;
@implementation Tetris
@synthesize tetrisArray;
@synthesize tempBlock;
-(id)initWithArraySize:(int)sz {
if( (self=[super init] )) {
tetrisArray = [[NSMutableArray alloc]initWithCapacity:sz];
}
return self;
}
-(void)createL {
int xPos = 10;
int yPos = 460;
for (int i = 0; i < 4; i++) {
tempBlock = [[Blocks node]initWithType:1];
tempBlock.blockSprite.position = ccp(xPos,yPos);
[tetrisArray addObject:tempBlock.blockSprite];
xPos = xPos + 26;
[tempBlock release];
}
}
-(void)dealloc {
[tempBlock release];
[tetrisArray release];
[super dealloc];
}
答案 0 :(得分:0)
你不能将一个动作分配给不同的精灵。一个动作 - 一个精灵。您可以使用操作复制功能来发布操作。
但是在你的情况下,动作创建循环,所以它必须是不同的动作...... 可能是其他地方的问题。
答案 1 :(得分:0)
不同的精灵不能同时执行相同的动作,所以你应该复制动作,如下面的代码:
sprite->runAction((CCActionInterval*)aciotn->copy->autoRelease());