cocos2dx 一步步入门 CCMoveTo/CCMoveBy/CCRotateTo/CCRotateBy

本文为Cocos2d-x初学者提供了一个逐步入门的教程,详细讲解了CCMoveTo、CCMoveBy、CCRotateTo和CCRotateBy这四个动作的用法,通过实例代码和注释帮助理解如何在游戏场景中实现物体的移动和旋转效果。附带源代码下载链接。
摘要由CSDN通过智能技术生成
// on "init" you need to initialize your instance
bool HelloWorld::init() {
    bool bRet = false;
    do {
        CC_BREAK_IF(!CCLayer::init());
        
        // 添加关闭按钮
        CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                          "CloseNormal.png",
                          "CloseSelected.png",
                          this,
                          menu_selector(HelloWorld::menuCloseCallback));
        CC_BREAK_IF(!pCloseItem);
        pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
        
        // 添加到菜单中
        CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
        CC_BREAK_IF(!pMenu);
        pMenu->setPosition(CCPointZero);
        this->addChild(pMenu, 1);
        
        CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
        float width = visibleSize.width;
        float originX = CCDirector::sharedDirector()->getVisibleOrigin().x + width - 100 * 2;
        float originY = CCDirector::sharedDirector()->getVisibleOrigin().y;
        float height = visibleSize.height;
        
        // grossini
        m_pGrossiniSprite = CCSprite::create(s_pathGrossini);
        CC_BREAK_IF(!m_pGrossiniSprite);
        m_pGrossiniSprite->retain();  // 内存管理,需要保留
        m_pGrossiniSprite->setPosition(ccp(originX / 3.f, originY + height / 2.f));
        this->addChild(m_pGrossiniSprite);
        /// CCMoveTo 表示将精灵的位置移动到500, 500的位置,不管当前什么位置
        CCFiniteTimeAction *pMoveTo = CCMoveTo::create(3.5f, ccp(500, 500));
        CCFiniteTimeAction *pMoveBack = CCMoveTo::create(3.5, ccp(originX / 3.f,
                                                                  originY + height / 2.f));
        m_pGrossiniSprite->runAction(CCSequence::create(pMoveTo, pMoveBack, NULL));
        
        // tamara
        m_pTamaraSprite = CCSprite::create(s_pathGrossinisSister1);
        CC_BREAK_IF(!m_pTamaraSprite);
        m_pTamaraSprite->retain();    // 内存管理,需要保留
        m_pTamaraSprite->setPosition(ccp(originX / 3 * 2.f, originY + height / 2.f));
        this->addChild(m_pTamaraSprite);
        /// CCMoveBy 表示从当前位置开始,x方向向右移动300,y方向向下移动200
        CCFiniteTimeAction *pMoveBy = CCMoveBy::create(3.5f, ccp(300, -200));
        CCFiniteTimeAction *pMoveByBack = CCMoveTo::create(3.5, ccp(originX / 3 * 2.f,
                                                                    originY + height / 2.f));
        m_pTamaraSprite->runAction(CCSequence::create(pMoveBy, pMoveByBack, NULL));
        
        // kathia
        m_pKathiaSprite = CCSprite::create(s_pathGrossinisSister2);
        CC_BREAK_IF(!m_pKathiaSprite);
        m_pKathiaSprite->retain();    // 内存管理,需要保留
        m_pKathiaSprite->setPosition(ccp(originX / 3.f * 3, originY + height / 2.f));
        this->addChild(m_pKathiaSprite);
        /// CCRotateTo 表示旋转到指定的角度(180)
        /// CCRotateBy 表示从当前角度,继续再旋转指定的角度(180),那么最终角度为180 + (-45) = 135
        CCFiniteTimeAction *pRotateTo = CCRotateTo::create(3.5, 180);
        CCFiniteTimeAction *pRotateBy = CCRotateBy::create(3.5, -45);
        m_pKathiaSprite->runAction(CCSequence::create(pRotateTo, pRotateBy, NULL));
        
        bRet = true;
    } while (0);
    
    return bRet;
}


看注释!!!!

源代码:http://download.csdn.net/detail/woaifen3344/7188071



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值