Fork me on GitHub

两个精灵调用同一个动作

两个精灵调用同一个动作需要注意:

-(void) onEnter
{
[super onEnter];

[self centerSprites:3];

id actionTo = [CCRotateTo actionWithDuration: 2 angle:45];
id actionTo0 = [CCRotateTo actionWithDuration:2 angle:0];
[tamara runAction: [CCSequence actions:actionTo, actionTo0, nil]];

id actionBy = [CCRotateBy actionWithDuration:2 angle: 360];
id actionByBack = [actionBy reverse];
[grossini runAction: [CCSequence actions:actionBy, actionByBack, nil]];

[kathia runAction: [CCSequence actions:[[actionBy copy]autorelease], [[actionByBack copy]autorelease], nil]];

}

需要注意复制动作

 

但是对于贝塞尔曲线动作则不需要复制

 

-(void) onEnter
{
[super onEnter];

CGSize s = [[CCDirector sharedDirector] winSize];

//
// startPosition can be any coordinate, but since the movement
// is relative to the Bezier curve, make it (0,0)
//

// sprite 1
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(0, s.height/2);
bezier.controlPoint_2 = ccp(300, -s.height/2);
bezier.endPosition = ccp(300,100);

id bezierForward = [CCBezierBy actionWithDuration:3 bezier:bezier];
id bezierBack = [bezierForward reverse];
id seq = [CCSequence actions: bezierForward, bezierBack, nil];
id rep = [CCRepeatForever actionWithAction:seq];

// sprite 2
//[tamara setPosition:ccp(80,160)];
ccBezierConfig bezier2;
bezier2.controlPoint_1 = ccp(100, s.height/2);
bezier2.controlPoint_2 = ccp(200, -s.height/2);
bezier2.endPosition = ccp(240,160);

id place1 = [CCPlace actionWithPosition:ccp(80,160)];
id bezierTo1 = [CCBezierTo actionWithDuration:2 bezier:bezier2];
[tamara runAction:[CCSequence actions: place1, bezierTo1, nil]];

// sprite 3
//[kathia setPosition:ccp(400,160)];
id place2 = [CCPlace actionWithPosition:ccp(400,160)];
id bezierTo2 = [CCBezierTo actionWithDuration:2 bezier:bezier2];
[kathia runAction:[CCSequence actions: place2, bezierTo2, nil]];

[grossini runAction: rep];
//[tamara runAction:bezierTo1];
//[kathia runAction:bezierTo2];

}




posted on 2012-04-05 17:42  pengyingh  阅读(143)  评论(0)    收藏  举报

导航