【Cocos2d TestCpp实例模仿二】-- ActionsTest

转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/25513031

缓冲动作

一、TestCpp实例ActionsTest 模块中SpriteEaseExponential指数缓冲动作
程序代码:

bool HelloWorld::init()
{
    if ( !CCLayer::init() )
    {
        return false;
    }
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                        this,
                                        menu_selector(HelloWorld::menuCloseCallback));
    
	pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
                                origin.y + pCloseItem->getContentSize().height/2));

    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu, 1);

	CCSprite *sp1 = CCSprite::create("cpp1.png");
	sp1->setScale(0.5f);
	sp1->setPosition(ccp(100, 100));
	this->addChild(sp1);

	CCSprite *sp2 = CCSprite::create("cpp2.png");
	sp2->setScale(0.5f);
	sp2->setPosition(ccp(visibleSize.width/2-100, visibleSize.height/2));
	this->addChild(sp2);

	CCSprite *sp3 = CCSprite::create("cpp3.png");
	sp3->setScale(0.5f);
	sp3->setPosition(ccp(visibleSize.width/2+100, visibleSize.height/2));
	this->addChild(sp3);


	/******************************SpriteEaseExponential指数缓冲*********************************/
	CCActionInterval* move = CCMoveBy::create(3, ccp(visibleSize.width/2, 0));;//移动动作
	CCActionInterval* move_back = move->reverse();

	CCActionInterval* move_ease_in = CCEaseExponentialIn::create((CCActionInterval*)(move->copy()->autorelease()) );//移动时由慢到快(指数加速)
	CCActionInterval* move_ease_in_back = move_ease_in->reverse();

	CCActionInterval* move_ease_out = CCEaseExponentialOut::create((CCActionInterval*)(move->copy()->autorelease()) );//移动时由慢到快(指数减数)
	CCActionInterval* move_ease_out_back = move_ease_out->reverse();

	CCDelayTime *delay = CCDelayTime::create(2.0f);//3s后动画回放

	CCSequence* seq1 = CCSequence::create(move, delay, move_back, CCCA(delay), NULL);
	CCSequence* seq2 = CCSequence::create(move_ease_in, CCCA(delay), move_ease_in_back, CCCA(delay), NULL);
	CCSequence* seq3 = CCSequence::create(move_ease_out, CCCA(delay), move_ease_out_back, CCCA(delay), NULL);

	sp1->runAction(seq1);
	sp2->runAction(seq2);
	sp3->runAction(seq3);

	return true;
}


二、TestCpp实例ActionsTest 模块中SpriteEaseSine赛因缓冲动作
程序代码:

bool HelloWorld::init()
{
    if ( !CCLayer::init() )
    {
        return false;
    }
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                        this,
                                        menu_selector(HelloWorld::menuCloseCallback));
    
	pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
                                origin.y + pCloseItem->getContentSize().height/2));

    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu, 1);

	CCSprite *sp1 = CCSprite::create("cpp1.png");
	sp1->setScale(0.5f);
	sp1->setPosition(ccp(100, 100));
	this->addChild(sp1);

	CCSprite *sp2 = CCSprite::create("cpp2.png");
	sp2->setScale(0.5f);
	sp2->setPosition(ccp(visibleSize.width/2-100, visibleSize.height/2));
	this->addChild(sp2);

	CCSprite *sp3 = CCSprite::create("cpp3.png");
	sp3->setScale(0.5f);
	sp3->setPosition(ccp(visibleSize.width/2+100, visibleSize.height/2));
	this->addChild(sp3);


	/******************************SpriteEaseSine赛因缓冲*********************************/
	CCActionInterval* move = CCMoveBy::create(3, ccp(visibleSize.width/2, 0));//移动动作
	CCActionInterval* move_back = move->reverse();

	CCActionInterval* move_ease_in = CCEaseSineIn::create((CCActionInterval*)(move->copy()->autorelease()) );//移动时由慢到快(赛因加速)
	CCActionInterval* move_ease_in_back = move_ease_in->reverse();

	CCActionInterval* move_ease_out = CCEaseSineOut::create((CCActionInterval*)(move->copy()->autorelease()) );//移动时由快到慢(赛因减速)
	CCActionInterval* move_ease_out_back = move_ease_out->reverse();

	CCDelayTime *delay = CCDelayTime::create(3.0f);//3s后动画回放

	CCSequence* seq1 = CCSequence::create(move, delay, move_back, CCCA(delay), NULL);
	CCSequence* seq2 = CCSequence::create(move_ease_in, CCCA(delay), move_ease_in_back, CCCA(delay), NULL);
	CCSequence* seq3 = CCSequence::create(move_ease_out, CCCA(delay), move_ease_out_back, CCCA(delay), NULL);

	sp1->runAction(seq1);
	sp2->runAction(seq2);
	sp3->runAction(seq3);

	return true;
}




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值