代码改变世界

cocos2d(CCSprite 用贝塞尔做抛物线,足球精灵并且同时做旋转放大效果)

2014-03-20 20:59  Lves Li  阅读(343)  评论(0编辑  收藏  举报

今天刚学到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;
}

运行结果: