cocos2d-3.x 创建动画
1.多文件帧序列动画
TrademarkAnimation.h
#ifndef __TRADEMARK_ANIMATION_H__ #define __TRADEMARK_ANIMATION_H__ #include "cocos2d.h" USING_NS_CC; class TrademarkAnimation : public cocos2d::CCLayer{ private: Animate* createAnimate(); public : ~TrademarkAnimation(); virtual bool init(); CREATE_FUNC(TrademarkAnimation); }; #endif
TrademarkAnimation.cpp
#include "TrademarkAnimation.h" bool TrademarkAnimation::init(){ if(!CCLayer::init())return false; Sprite* runSp=Sprite::create(); runSp->setPosition(Point(200,200)); this->addChild(runSp); runSp->runAction(createAnimate()); return true; } Animate* TrademarkAnimation::createAnimate(){ int totalFrames=319; SpriteFrame* frame=NULL; Vector<SpriteFrame*> frameVec; for(int i=1;i<=totalFrames;i++){ //tdmark/tdmark0001.png....tdmark/tdmark0319.png frame=SpriteFrame::create(StringUtils::format("tdmark/tdmark%04d.png",i),Rect(0,0,354,270)); frameVec.pushBack(frame); } Animation* animation=Animation::createWithSpriteFrames(frameVec); animation->setLoops(-1); animation->setDelayPerUnit(0.04f);//: 1/帧频 Animate* action=Animate::create(animation); return action; } TrademarkAnimation::~TrademarkAnimation(){ }
2.plist文件创建动画
#include "TrademarkAnimation.h" bool TrademarkAnimation::init(){ if(!CCLayer::init())return false; Size size=Director::getInstance()->getVisibleSize(); Sprite* runSp=Sprite::create(); runSp->setPosition(size.width*0.5,size.height*0.5); this->addChild(runSp); runSp->runAction(createAnimate()); return true; } Animate* TrademarkAnimation::createAnimate(){ //如果flash出图,设置: //Algorithm: Basic/MaxRects //Data format: cocos2D v2 //Trim: false //Stack frames: false SpriteFrameCache* frameCache=SpriteFrameCache::getInstance(); frameCache->addSpriteFramesWithFile("trademark.plist","trademark.png"); //或 frameCache->addSpriteFramesWithFile("trademark.plist"); int totalFrames=319; SpriteFrame* frame=NULL; Vector<SpriteFrame*> frameVec; for(int i=0;i<totalFrames;i++){ //T1 instance 10000.......T1 instance 10318 frame=frameCache->getSpriteFrameByName(StringUtils::format("T1 instance 1%04d",i)); frameVec.pushBack(frame); } Animation* animation=Animation::createWithSpriteFrames(frameVec); animation->setLoops(-1); animation->setDelayPerUnit(0.04f); Animate* action=Animate::create(animation); return action; } TrademarkAnimation::~TrademarkAnimation(){ }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2015-11-26 命令行编译swc