cocos2dx 3.x 給Sprite新增遮罩
引言
程式截圖:
有時候,你在做遊戲時,可能需要一種方式來顯示精靈的某一部分(就是新增遮罩啦)。
一種方式就是使用另外一張圖片,叫做mask。你把mask圖片中間設定成白色,白色區域是被mask圖片的可見區域。之後這個白色區域會透明的。
然後,你可以使用本教程提供的方法來把mask圖和原圖結合起來,然後建立如上圖所示的效果。
你會發現本教程提供的方法非常方便,用它可以完成許多很有意思的效果。比如,把大頭貼,或者像框等等。所以這些內容,你都可以從本教程中學到!
學習本教程的前提是你要熟悉cocos2d-x,如果你對cocos2d是何物還不清楚的話,建議你先學習一下其它cocos2d-x教程。
Getting Started
啟動terminal,執行"python /Cocos/cocos2d-x-3.0beta2/tools/project-creator/create_project.py"。把工程命名為MaskedCal,然後選擇一個資料夾來儲存,最後點Create。
接下來,請下載本工程所需要的資原始檔並把它們拖到你的Xcode的Resource分組中,確保“Copy items into destination group’s folder (if needed)” 並複選中,然後點Finish。
在開始編碼之前,讓我們先來一點爵士音樂。同時,由於這裡給的圖片是480x320的,為了適應各個解析度,這裡需要setDesignResolutionSize,方便在不同的裝置上顯示。就是告訴遊戲引擎,我是針對480x320畫素設計的,遇到其他解析度的裝置,勞駕你幫我自動調整。開啟AppDelegate.cpp,然後做如下修改:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<code
class = "language-cpp" > //
Add to top of file
#include
"SimpleAudioEngine.h"
//At
end of applicationDidFinishLaunching,
//replace
last 3 lines with the following 5 lines:
CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic( "TeaRoots.mp3" ,
true );
EGLView::getInstance()->setDesignResolutionSize(480,
320, ResolutionPolicy::NO_BORDER);
auto
scene = HelloWorld::sceneWithLastCalendar(0);
director->runWithScene(scene);
return
true ;</code>
|
這裡播放一個由Kevin MacLeod製作的一首非常好聽的曲子,然後呼叫了一個新的方法來建立場景。
接下來,開啟HelloWorldScene.h 並作下面修改:
1 2 3 4 5 6 7 |
<code
class = "language-cpp" > //
Add new instance variable
static
int
calendarNum;
//replace
createScene methond
static
cocos2d::Scene* sceneWithLastCalendar( int
lastCalendar);
//
Add an another create methond
static
cocos2d::Layer* layerWithLastCalendar( int
|