標籤:class swa closure 執行 包含 span lis 參數 pre
使用cocos的 run命令在真實android裝置上運行apk時,如果報 adb more than one devices 可以使用下面的命令來解決問題:
1.找到android sdk 下面的 adb 所在目錄 .(一般是: %install_directory%/Android/android-sdk/platform-tools/adb)
2.運行下面命令:
adb kill-server
使用cocos工具編譯apk
cocos compile -p android -m release
使用cocos 在真實android裝置上運行apk
cocos run -p android
沒有指定 -m 時,預設是 debug.
新建立的cocos2d-js項目目錄結構:
main.js : 負責啟動遊戲情境, 無論是Web瀏覽器運行還是原始平台運行,都是通過該檔案啟動遊戲情境的。
編譯和啟動遊戲:
// 在項目目錄下開啟終端並執行// -p指示目標平台,包括web,ios,mac,android,win32,每次編譯請選擇其中之一cocos compile -p web|ios|mac|android|win32// 除此之外,還可以選擇編譯模式:-m debug|release// Web平台還可以添加--advanced來使用Closure Compiler的進階混淆功能對代碼進行混淆cocos compile -p android -m releasecocos compile -p web -m release --advanced// 將compile命令替換為run即可在模擬器或真機上運行遊戲cocos run -p webcocos run -p ios
cocos2d-js工程中,所有js檔案都要在 project.json檔案中進行註冊。
cocos2d-js 事件處理機制:
事件處理機制中有三個角色:
1.事件: cc.EventTouch(觸摸事件) , cc.EventMouse(滑鼠事件) , cc.EventCustom(自訂事件) , cc.EventKeyboard(鍵盤事件) , cc.EventAcceleration(加速事件).
2.事件來源: 是cocos2d-js中的精靈,層,菜單等節點對象
3.事件處理器: 是事件監聽器類 cc.EventListener , 它包含不同類型的監聽器:
1>. cc.EventListener.ACCELERATION 加速事件監聽器
2>. cc.EventListener.CUSTOM 自訂事件監聽器
3>. cc.EventListener.KEYBOARD 鍵盤事件監聽器
4>. cc.EventListener.MOUSE 滑鼠事件監聽器
5>. cc.EventListener.TOUCH_ALL_AT_ONCE 多點觸摸事件監聽器
6>. cc.EventListener.TOUCH_ONE_BY_ONE 單點觸摸事件監聽器
事件管理器: 事件 和 監聽器之間需要在程式中建立關係, 關係的建立是由 事件管理器負責: cc.EventManager
cc.EventManager 的 addListener函數,用來註冊事件監聽器:
cc.EventManager.addListener(listener, nodeOrPriority);
@listener ,是要註冊的事件監聽器對象
@nodeOrPriority , 可以是一個node對象,或者一個表示優先順序的數值.
//建立時間監聽器var listener = cc.EventListener.create({ event:cc.EventListener.TOUCH_ONE_BY_ONE, swallowTouches: true, //設定是否吞沒事件,在 onTouchBegan 方法返回 true 時吞掉事件,不再向下傳遞
onTouchBegan:function(touch,event) {
// ..... return false;
}
});
//註冊事件監聽器
cc.eventManager.addListener(listener , this.getChildByTag(SpriteTags.kBoxA_Tag));
多解析度螢幕適配
橫豎屏設定
android: 在 runtime-src/proj.android/AndroidManifest.xml 檔案的設定:
android:screenOrientation="landscape" //landscape為橫屏, portrait 為豎屏
ios: 在xcode 中設定:
精靈:
精靈是遊戲中非常重要的概念,圍繞精靈的還有很多概念,如精靈幀,緩衝,動作,動畫等。
1.精靈的建立:
1>. 根據圖片資源建立精靈:
//根據圖片資源路徑var sp1 = new cc.Sprite("res/background.png");
裁剪資源圖片的指定地區:
var sp2 = new cc.Sprite("res/tree.png",cc.rect(604,38,302,295));
2>.從紋理圖集的精靈幀名建立:
var sp = new cc.Sprite("#background.png");// note: 這種方式與圖片資源路徑方式建立的精靈的參數都是一個字串,為了區分,在精靈幀名前加上 # 號
3>.根據精靈幀建立:
//先從精靈緩衝擷取精靈幀對象,再由精靈幀對象建立精靈var spriteFrame = cc.spriteFrameCache.getSpriteFrame("background.png");var sp = new cc.Sprite(spriteFrame);
4>.根據紋理建立:
//1.首先建立紋理對象, 再通過紋理來建立精靈var texture = cc.textureCache.addImage("background.png");var sp = new cc.Sprite(texture);//可以選擇紋理的指定地區來建立精靈var sp2 = new cc.Sprite(texture, cc.rect(0,0,480,320));
建立精靈時,應該選擇這四種方式的哪一種?
在具體情境中建立精靈時,應該選擇最方便,並且效能最好的方式來建立精靈。 紋理圖集和精靈緩衝就是最佳化效能的建立精靈的方式。
紋理圖集(texture atlas),也稱為精靈表(sprite sheet), 它是將許多小的精靈圖片組合到一張大圖裡,建立精靈時,根據圖集的特定地區來建立精靈。
在cocos2d中主流使用 Zwoptex 或者 TexturePacker 工具來建立紋理圖集。 這些工具會產生一個 大的紋理圖集,以及一個 plist 檔案。 plist檔案裡包含了精靈名和它的座標。
精靈緩衝:
精靈緩衝是緩衝中的一種, cocos2d中緩衝的種類有: 紋理緩衝(TextureCache), 精靈幀緩衝(SpriteFrameCache) , 動畫緩衝(AnimationCache)。
建立各種緩衝的目的基本上是為了最佳化效能。
精靈緩衝使用執行個體:
//首先擷取精靈幀緩衝, 然後向精靈幀緩衝中添加精靈幀 ,最後使用精靈幀名建立精靈var frameCache = cc.spriteFrameCache;frameCache.addSpriteFrames("res/SpriteSheet.plist","res/SpriteSheet.png");var mountain1 = new cc.sprite("#mountain1.png");//建立精靈的另外一種方式, 主要用於精靈動畫上var frameCache = cc.spriteFrameCache;frameCache.addSpriteFrames("res/SpriteSheet.plist","res/SpriteSheet.png");var heroSprite = frameCache.getSpriteFrame("helo1.png");
情境和層
一般是在層的建構函式中對介面的控制項進行建立和初始化。
層的生命週期函數:
1. ctor 建構函式, 初始化層時調用
2. onEnter() , 進入層時調用
3. onEnterTransitionDidFinish() 進入層而且過度動畫結束時調用
4. onExit() ,退出層時調用
5. onExitTransitionDidStart() , 退出層而且開始過渡動畫時調用
在重寫層的生命週期函數時,一定要調用父類函數語句:this._super().
情境過渡動畫
情境過渡動畫是由TransitionScene類和它的子類展示的。 TransitionScene類的直接子類有11個,有些子類還有子類,全部過渡動畫有30多個。 過渡動畫的使用方式都是類似的:
cc.director.pushScene(new cc.TransitionFadeTR(1.0, new SettingScene()));//過渡動畫類的建構函式有兩個參數, 第一個是動畫期間,第二個是情境對象
[cocos2d-js] - 01