[一位菜鸟的COCOS-2D编程之路]COCOS2D方法回调,块语句回调和反转动作和特殊动作

1.今天学习了有关动作的回调的内容。

1)就方法回调进行说明:简单的说 就是使用了SEL 选择器方法

-(id) init
{
	// always call "super" init
	// Apple recommends to re-assign "self" with the "super's" return value
	if( (self=[super init]) ) {
		//获取当前屏幕的大小
        
        CGSize size = [CCDirector sharedDirector].winSize;
        
        //    创建第一个精灵,并将其添加为当前层的子节点
        
        apple = [CCSprite spriteWithFile:@"apple.png"];
        apple.position = ccp(50,100);
        apple.opacity = 0;
        [self addChild:apple];
        
        //    创建第二个精灵,并将其添加为当前层的子节点
        
        plane = [CCSprite spriteWithFile:@"plane.png"];
        plane.position = ccp(size.width/2,size.height/2);
        plane.opacity  = 0;
        [self addChild: plane];
        
        
        
        //    创建第三个精灵,并将其添加为当前层的子节点
        
        ball = [CCSprite spriteWithFile:@"ball.png"];
        ball.position = ccp(250,100);
        ball.opacity = 0;
        [self addChild:ball];
        
        //    创建第四个精灵,并将其添加为当前层的子节点
        
        orange = [CCSprite spriteWithFile:@"orange.png"];
        orange.position = ccp(250,300);
        orange.opacity = 0;
        [self addChild:orange];
        
        //    创建第五个精灵,并将其添加为当前层的子节点
        
        tomato = [CCSprite spriteWithFile:@"tomato.png"];
        tomato.position = ccp(250,200);
        tomato.opacity = 0;
        [self addChild:tomato];
        
        //    第一个精灵执行序列组合动作,其中最后一个动作调用了moveSprite方法
        
        [apple runAction:[CCSequence actions:[CCDelayTime actionWithDuration:1],
                          [CCSpawn actions:
                           [CCFadeIn actionWithDuration:1],
                           [CCScaleTo actionWithDuration:1 scale:1.5],
                           nil],
                          [CCDelayTime actionWithDuration:1],
                          [CCCallFunc actionWithTarget:self selector:@selector(moveSprite)],
                          nil]];
        
        //    第二个精灵执行序列组合动作,其中最后一个动作调用了removeSprite:方法,并将当前的节点对象传递给指定的方法,注意冒号不能省略
        
        [plane runAction:[CCSequence actions:[CCDelayTime actionWithDuration:1],
                          [CCSpawn actions:
                           [CCFadeIn actionWithDuration:1],
                           [CCScaleTo actionWithDuration:1 scale:1.5],
                           nil],
                          [CCDelayTime actionWithDuration:1],
                          [CCCallFuncN actionWithTarget:self selector:@selector(removeSprite:)],
                          nil]];
        
        //    第三个精灵执行序列组合动作,其中最后一个动作调用了tintSprite:data:方法,并将当前的节点对象和数据传递给指定的方法,注意冒号和参数不能省略
        
        [ball runAction:[CCSequence actions:[CCDelayTime actionWithDuration:1],
                         [CCSpawn actions:
                          [CCFadeIn actionWithDuration:1],
                          [CCScaleTo actionWithDuration:1 scale:1.5],
                          nil],
                         [CCDelayTime actionWithDuration:1],
                         [CCCallFuncND actionWithTarget:self selector:@selector(tintSprite:data:)data:(void *)2],
                         nil]];
        
        //    第四个精灵执行序列组合动作,其中最后一个动作调用了tintSprite:data:方法,并将当前的节点对象和数据传递给指定的方法,注意冒号和参数不能省略
        
        [orange runAction:[CCSequence actions:[CCDelayTime actionWithDuration:1],
                           [CCSpawn actions:
                            [CCFadeIn actionWithDuration:1],
                            [CCScaleTo actionWithDuration:1 scale:1.5], 
                            nil], 
                           [CCDelayTime actionWithDuration:1],
                           [CCCallFuncO actionWithTarget:self selector:@selector(rotateSprite:object:) object:tomato],
                           nil]];
		
	}
	return self;
}

2.块语句回调:一句话就是在代码中嵌入了 block语句

-(id) init
{
	// always call "super" init
	// Apple recommends to re-assign "self" with the "super's" return value
	if( (self=[super init]) ) {
				// ask director for the window size
		CGSize size = [[CCDirector sharedDirector] winSize];
        
        //    创建第一个精灵,并将其添加为当前层的子节点
        
        apple = [CCSprite spriteWithFile:@"apple.png"];
        apple.position = ccp(50,100);
        apple.opacity = 0;
        [self addChild:apple];
        
        //    创建第二个精灵,并将其添加为当前层的子节点
        
        plane = [CCSprite spriteWithFile:@"plane.png"];
        plane.position = ccp(size.width/2,size.height/2);
        plane.opacity  = 0;
        [self addChild: plane];
        
        
        
        //    创建第三个精灵,并将其添加为当前层的子节点
        
        ball = [CCSprite spriteWithFile:@"ball.png"];
        ball.position = ccp(250,100);
        ball.opacity = 0;
        [self addChild:ball];
        
        //    创建第四个精灵,并将其添加为当前层的子节点
        
        orange = [CCSprite spriteWithFile:@"orange.png"];
        orange.position = ccp(250,300);
        orange.opacity = 0;
        [self addChild:orange];
        
        [apple runAction:[CCSequence actions:[CCDelayTime actionWithDuration:1],
                          [CCSpawn actions:
                           [CCFadeIn actionWithDuration:1],
                           [CCScaleTo actionWithDuration:1 scale:1.5],
                           nil],
                          [CCDelayTime actionWithDuration:1],
                          [CCCallBlock actionWithBlock:^{
            [apple runAction:[CCMoveTo actionWithDuration:2 position:ccp(50, 200)]];
        
        }],  nil]];
        
        [plane runAction:[CCSequence actions:[CCDelayTime actionWithDuration:1],
                          [CCSpawn actions:
                           [CCFadeIn actionWithDuration:1],
                           [CCScaleTo actionWithDuration:1 scale:1.5],
                           nil],
                          [CCDelayTime actionWithDuration:1],
                          [CCCallBlockN actionWithBlock:^(CCNode *node){
            CCNode *currentNode = node;
            [self removeChild:currentNode cleanup:YES];
            
        }],  nil]];
        
        
        [ball runAction:[CCSequence actions:[CCDelayTime actionWithDuration:1],
                          [CCSpawn actions:
                           [CCFadeIn actionWithDuration:1],
                           [CCScaleTo actionWithDuration:1 scale:1.5],
                           nil],
                          [CCDelayTime actionWithDuration:1],
                          [CCCallBlockO actionWithBlock:^(id object){
            CCNode *currentNode = (CCNode *)object;
            [currentNode runAction:[CCSequence actions:[CCFadeIn actionWithDuration:2],[CCRotateBy actionWithDuration:3 angle:180], nil]];
            
        } object:orange],  nil]];
        
        
        

	}
	return self;
}

3.反转动作:如果一系列动作有顺序,那么反转动作就是原来动作的逆向run

与 CCReverseTime 有关

4.特殊动作

CCActionTween  主要是修改一个对象的属性,比如说  scale,width等

id scaleA = 【CCScale actionWithDuration :2 scale:3】;

id scaleB = 【CCActionTween actionWithDuration:2 key: @“Scale” form 1:to:3】;


CCSpeed 可以修改一个飞机的速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值