cocos2d-x 設置動畫

/**
 * 得到動畫動做函數
 * animName:動畫幀的名字
 * delay:動畫幀與幀之間的間隔時間
 * animNum:動畫幀的數量
 */
Animation* Start::getAnimationByName(std::string animName,float delay,int animNum){
    Animation* animation = Animation::create();
    // 循環從精靈幀緩存中獲取與圖片名稱相對應的精靈幀組成動畫
	for(unsigned int i = 1;i<=animNum;i++){
        // 獲取動畫圖片名稱,例如plane0.png
        std::string frameName = animName;
        frameName.append(StringUtils::format("%d",i)).append(".png");
		// 將單張圖片添加爲精靈幀(即動畫幀)
		animation->addSpriteFrameWithFile(frameName.c_str());
    }
    // 設置動畫播放的屬性
	animation->setDelayPerUnit(delay);
	// 讓精靈對象在動畫執行完後恢復到最初狀態
	animation->setRestoreOriginalFrame(true);
    return animation;
}




Animation* laughAnimation = getAnimationByName("mole_laugh", 0.5f, 3);
AnimationCache::getInstance()->addAnimation(laughAnimation, "laughAnimation");


auto laughAnimation = Animate::create(AnimationCache::getInstance()->getAnimation("laughAnimation"));
                mallet->setScale(0.8f);
                mallet->setPosition(mole->getPosition().x+100, mole->getPosition().y+60);
                this->addChild(mallet, 0);
                // 播放木槌動畫
                mallet->runAction(Sequence::create(malletAnimation,
                                                   CallFunc::create([=]{
                    // 播放地鼠被打中音效
                    SimpleAudioEngine::getInstance()->playEffect("ow.caf");
                    // 地鼠被打中後播放粒子效果
                    auto aswoon = ParticleSystemQuad::create("aswoon.plist");
                    aswoon->setPosition(mole->getPosition().x, mole->getPosition().y);
                    this->addChild(aswoon);
                    // 刪除木槌
                    this->removeChild(mallet);
                }), NULL));
相關文章
相關標籤/搜索