今天刚学到Cocos2d中的动作哪一张,自己做了一个用贝塞尔曲线足球精灵实现同时放大旋转和抛物线动作。
使用
[CCSpawn actions:,,]链接这几个动作,同时做。与CCSequence(一个动作做完然后做另一个)不同;
直接上代码,很简单。
-(id) init
{
// always call "super" init
// Apple recommends to re-assign "self" with the "super's" return value
if( (self=[super init]) ) {
CGSize winSize=[CCDirector sharedDirector].winSize; //添加背景图片。。。。。。。。。。。
CCSprite *bgImage=[CCSprite spriteWithFile:@"background.jpg"];
// [bgImage setAnchorPoint:CGPointZero];
bgImage.position=ccp(winSize.width/2, winSize.height/2);
[bgImage setScaleX:winSize.width/bgImage.texture.contentSize.width];
[bgImage setScaleY:winSize.height/bgImage.texture.contentSize.height]; //添加 炮炮兵。。。。。。。。。。。。。。。。。
CCSprite *paoPao=[CCSprite spriteWithFile:@"paopao.png"];
[paoPao setScale:0.5];
paoPao.position=ccp(winSize.width/2+200, winSize.height/2);
[self addChild:bgImage z:-1];
[self addChild:paoPao z:1];
//移动
//CCAction *moveTo=[CCMoveBy actionWithDuration:2.0f position:ccp(-400, 0)];
//[paoPao runAction:moveTo]; //跳动
[paoPao runAction:[CCJumpTo actionWithDuration:5.0f position:ccp(winSize.width-paoPao.contentSize.width, winSize.height/2) height:100 jumps:3]]; //定义足球精灵......................... CCSprite *ball=[CCSprite spriteWithFile:@"ball.png"];
ball.position=ccp(50, 600); //精灵起始位置
[self addChild:ball z:2];
//贝塞尔曲线
ccBezierConfig c={ccp(600, 200),ccp(200,700),ccp(500,450)}; //定义一个结构体 ,第一个是目标位置,其他两个是控制点,第二个决定高度 CCBezierTo * bezierTo=[CCBezierTo actionWithDuration:6.0 bezier:c]; //旋转
CCRotateTo *actionRotate =[CCRotateTo actionWithDuration:6 angle:1200];//旋转1200度
//放大
CCScaleTo *scalTo=[CCScaleTo actionWithDuration:6 scale:2.5]; //fa //将三个动作封装成一个同时播放进行的动作 CCAction * action = [CCSpawn actions:bezierTo, actionRotate,scalTo, nil];
[ball runAction:action]; }
return self;
}
运行结果: