Cocos2dx中精靈(CCSprite)、動畫建立
- 1 .精靈的3種建立方法
/* _MySprite自定義的一個類 */
bool _MySprite::init()
{
//方法1.直接使用圖片來建立精靈
CCSprite* sprite = CCSprite::create("CloseNormal.png");
addChild(sprite);
sprite->setPosition(ccp(100, 100));
-------------------------------------------------
//方法2.通過紋理建立精靈
CCTexture2D* texture = CCTextureCache::sharedTextureCache()
->addImage("CloseNormal.png");
CCSprite* sprite = CCSprite::createWithTexture(texture);
addChild(sprite);
sprite->setPosition(ccp(100, 100));
-------------------------------------------------
//方法3.通過精靈幀(幀)建立精靈
CCTexture2D* texture = CCTextureCache::sharedTextureCache()
->addImage("CloseNormal.png");
CCSpriteFrame* frame = CCSpriteFrame::createWithTexture(texture, CCRect(0, 0, 20, 20));
CCSprite* sprite = CCSprite::createWithSpriteFrame(frame);
addChild(sprite);
sprite->setPosition(ccp(100, 100));
return true;
}
- 2 .動作(CCMoveBy)和動畫( CCAnimate)
bool _MoveByAction::init()
{
CCLayer::init();
//(1). moveby
CCSprite* sprite = CCSprite::create("CloseNormal.png");
sprite->setPosition(ccp(100, 100));
addChild(sprite);
#if 0
/* 建立動作 */
CCMoveBy* moveby = CCMoveBy::create();
sprite->runAction(moveby);
#endif
-----------------------------------------------------
//(2). 建立動畫
CCArray* arr = CCArray::create();
for (auto i = 0; i < var; ++i)
{
/* var變數為當前resource中有多少張資源圖片 */
char fileName[256];
memset(fileName, 0x00, sizeof(fileName));
sprintf(fileName, "圖片名稱%d.png", i);
CCSpriteFrame* frame = CCSpriteFrame::create(fileName, CCRect(0, 0, 80, 80));
/* CCRect(0,0,80,80)中的80*80是因為圖片資源為80*80 */
arr->addObject(frame);
}
CCAnimation* animation = CCAnimation::createWithSpriteFrames(arr, 0.1f);
//0.1f是time
CCAnimate* animate = CCAnimate::create(animation);
/* 讓動畫不停的執行 */
CCRepeatForever* repeat = CCRepeatForever::create(animate);
sprite->runAction(repeat);
return true;
}
上面建立動畫中,採用了陣列來存放圖片資源,假如為植物大戰殭屍遊戲中的植物(豌豆),共有8張(每秒鐘8張:p_2_01~p_2_08);如下所示例:
,
但是在實際的開發中,不會這樣存放圖片資源(會浪費空間),特別是序列幀的特性中;應為下圖所示存放資源(將一系列的圖片放在一起):
細心的讀者會有這樣的疑惑,那怎麼去從一張圖片中讀出每一個小的圖片資源?(假若上面的豌豆圖片的名稱是:pea.png,那麼會有對應的pea.plist檔案,其描述了該圖片資源的詳細資訊)。cocos2dx為我們提供了函式來解決這個問題,這樣便使得問題簡單化;如下程式碼:
bool _MoveByAction::init()
{
CCLayer::init();
//建立一個精靈
CCSprite* sprite = CCSprite::create("CloseNormal.png");
sprite->setPosition(ccp(100, 100));
addChild(sprite);
//PictureName.plist
//載入合成中的幀到記憶體
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("pea.plist");
//找出緩衝中的幀並且放到陣列arr中
CCArray* arr = CCArray::create();
for (auto i = 0; i < 8; ++i)
{
/* var變數為當前resource中有多少張資源圖片 */
char FrameName[256];
memset(FrameName, 0x00, sizeof(FrameName));
sprintf(FrameName, "圖片名稱%d.png", i);
CCSpriteFrame* frame = cache->spriteFrameByName(FrameName);
arr->addObject(frame);
}
//建立animation
CCAnimation* animation = CCAnimation::createWithSpriteFrames(arr, 0.1f);
//0.1f是time
//通過animation來建立animate
CCAnimate* animate = CCAnimate::create(animation);
/* 通過animate建立無限迴圈的動畫動作 */
CCRepeatForever* repeat = CCRepeatForever::create(animate);
//讓精靈來執行動畫
sprite->runAction(repeat);
return true;
}
相關文章
- 學習 PixiJS — 動畫精靈JS動畫
- 如何建立 mapbox 精靈圖
- Python 精靈模組_幀動畫_純畫筆下雪效果.pyPython動畫
- 原生webGL練習:利用點精靈實現字串動畫!Web字串動畫
- 網頁小實驗——用canvas生成精靈動畫圖片網頁Canvas動畫
- pixi的使用之建立和操作精靈
- 驅動精靈是幹嘛的 驅動精靈怎麼安裝驅動
- 《精靈之境》終測開啟,聯動《蔬菜動物精靈》打造可愛旅程
- 天貓精靈的自定義語音技能建立流程
- 初識屬性動畫——使用Animator建立動畫動畫
- python 精靈模組非常簡單的讓小朋友製作遊戲和動畫Python遊戲動畫
- Flutter動畫之粒子精講Flutter動畫
- 使用 MacSVG 建立 SVG 動畫MacSVG動畫
- win10如何強制解除安裝驅動精靈_win10解除安裝驅動精靈的方法Win10
- 用MovieMator Video Editor Pro建立畫中畫影片IDE
- Flare動畫進階——建立可互動的一拳超人動畫動畫
- win10驅動精靈不受信任如何處理_win10無法安裝驅動精靈任解決方法Win10
- win10驅動精靈不信任怎麼辦_win10驅動精靈無法安裝如何解決Win10
- SpriteAtlas精靈圖集
- 為角色外表注入“靈魂”的動畫製作動畫
- Flutter 建立自定義路由過渡動畫Flutter路由動畫
- CSS精靈圖技術CSS
- 靈魂畫手:漫畫圖解 SSH圖解
- win10系統驅動精靈解除安裝不了怎麼辦_win10驅動精靈解除安裝不了如何解決Win10
- 為什麼驅動精靈檢測不到獨立顯示卡_驅動精靈檢測不到獨立顯示卡解決步驟
- Flutter 敲一個靈動的錄音按鈕動畫 - Speed CodeFlutter動畫
- 搞定動畫之 JQuery 中的自定義動畫動畫jQuery
- [譯] 如何建立 BubblePicker – Android 多彩選單動畫Android動畫
- vue中的動畫Vue動畫
- Flutter 中的動畫Flutter動畫
- 一個靈活的,可配置的波浪動畫外掛動畫
- 學習 PixiJS — 精靈狀態JS
- Leprechaun綠精靈魔法來襲
- 利用驅動精靈更新win10系統硬體驅動的方法Win10
- 可愛精靈在球裡養著玩?《精靈之境》IOS預約開啟!iOS
- Centos8中建立LVM精簡邏輯卷CentOSLVM
- win10解除安裝驅動精靈後drivergenius刪不了怎麼辦_win10解除安裝驅動精靈後drivergenius刪不掉如何處理Win10
- 3D網頁小實驗-基於多執行緒和精靈動畫實現RTS式單位行為3D網頁執行緒動畫