CCMoveTo对我的CCSprites没有影响

时间:2011-05-10 06:44:21

标签: cocos2d-iphone

所有。我在这个函数中有一些函数“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];
}

2 个答案:

答案 0 :(得分:0)

你不能将一个动作分配给不同的精灵。一个动作 - 一个精灵。您可以使用操作复制功能来发布操作。

但是在你的情况下,动作创建循环,所以它必须是不同的动作...... 可能是其他地方的问题。

答案 1 :(得分:0)

不同的精灵不能同时执行相同的动作,所以你应该复制动作,如下面的代码:

  sprite->runAction((CCActionInterval*)aciotn->copy->autoRelease());