<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      GC DevKit 快速入門 -- 游戲概覽(一)

      接上節 http://www.rzrgm.cn/hangxin1940/archive/2013/04/09/3011424.html Whack That Mole!(打鼴鼠)游戲是一個使用Devkit引擎內置的一款游戲,通過學習該游戲的源代碼,我們會明白這些Devkit組建是如何組織在一起的。 ## 游戲安裝 首先啟動服務 $ basil serve 他會在`9200`端口啟動,在瀏覽器打開 `http://localhost:9200` ![devkit](http://docs.gameclosure.com/guide/assets/game-walkthrough/basil-start.png "devkit") Devkit會提前將打鼴鼠游戲加載好,在左側導航欄選中`Projects`。 ![devkit](http://docs.gameclosure.com/guide/assets/game-walkthrough/basil-projects.png "devkit") 然后選擇游戲圖標,并點擊`Simulate`,會在一個新窗口中運行模擬器。 ![devkit](http://docs.gameclosure.com/guide/assets/game-walkthrough/game-title.png "devkit") ## 瀏覽器調試 工欲善其事必先利其器,我們需要一個有力的調試工具,在上節的Hello World!中,我們知道如何使用UI監視工具與在Console中調試代碼。 那么現在就用UI監視工具看看這個打鼴鼠的場景結構。 ![devkit](http://docs.gameclosure.com/guide/assets/game-walkthrough/ui-inspector.png "devkit") ![devkit](http://docs.gameclosure.com/guide/assets/game-walkthrough/game-console.png "devkit") 現在打開Console,輸入: GC.app.view 它會返回場景的根節點對象,在Console中也可以方便的查看跟節點的子項 ## 工程結構 一個基本的Devkit工程結構如下: . ├── manifest.json ├── sdk -> /path/to/devkit/sdk ├── resources/ └── src └── Application.js 在上節已經講過各個目錄/文件存在的意義。 這里說下游戲的清單文件 `manifest.json`, 它可以包含任意數量的json格式的配置信息,一個典型的清單文件包含了程序的ID哈希碼、名稱以及設備屏幕方向的配置信息。 這個文件由`basil`自動生成,也可以手動編輯。 { "appID": "abcdefghijklmnopqrstuvwxyz012345", "shortName": "whackthatmole", "title": "Whack-that-Mole!", "supportedOrientations": [ "portrait" ] } ## 游戲流程 在深入研究打鼴鼠前,我們先看看整個程序的調用流程 ![devkit](http://docs.gameclosure.com/guide/assets/game-walkthrough/game-flow.png "devkit") 首先,devkit引擎會初始化環境,并且調用工程目錄下的程序入口`./src/Application.js`文件,它負責初始化屏幕。 程序使用視圖棧來壓入和彈出游戲屏幕,當進入游戲后,標題視圖會被壓入試圖棧,此時將在屏幕上顯示圖形并且等待用戶輸入以開始游戲,這個標題視圖定義在 `./src/TitleScreen.js` 文件。 當用戶觸摸`Play`按鈕后,游戲視圖會被壓入我們的視圖棧,游戲視圖負責設置游戲的資源以及游戲的界面,然后進行與結束游戲。它被定義在 `./src/GameScreen.js` 文件。 當游戲結束時,用戶的得分將被顯示在屏幕上,此時游戲會一直等待直到用戶輸入。接收到觸摸事件后,游戲試圖會被彈出試圖棧,返回到標題視圖,之后會繼續等待用戶輸入以便繼續開始游戲。 ## 游戲結構 項目的完整結構如下: . ├── manifest.json ├── sdk -> /path/to/basil/sdk ├── resources │ ├── images │ │ ├── hole_back.png │ │ ├── hole_front.png │ │ ├── icon.png │ │ ├── mole_hit.png │ │ ├── mole_normal.png │ │ └── title_screen.png │ └── sounds │ ├── effect │ │ └── whack.mp3 │ └── music │ └── levelmusic.mp3 └── src ├── Application.js ├── GameScreen.js ├── MoleHill.js ├── TitleScreen.js └── soundcontroller.js 游戲邏輯位于 `./src` 目錄,現在我們就來看看它。 一旦DevKit初始化后,游戲會從 `./src/Application.js` 開始。在打鼴鼠中,這個文件很短小,它的作用是是初始化標題視圖與游戲視圖,并且處理事件與引導游戲的流程。 /* * 游戲主程序,所有代碼將從這里開始. */ // 導入devkit的模塊 import device; import ui.StackView as StackView; // 導入用戶模塊 import src.TitleScreen as TitleScreen; import src.GameScreen as GameScreen; import src.soundcontroller as soundcontroller; /* 程序繼承于 GC.Application * 當游戲運行時,用于導出與實例化 */ exports = Class(GC.Application, function () { /* 在引擎被創建之后資源加載之前運行 */ this.initUI = function () { var titlescreen = new TitleScreen(), gamescreen = new GameScreen(); this.view.style.backgroundColor = '#30B040'; //在場景試圖的根加入一個新的 StackView 類 var rootView = new StackView({ superview: this, x: device.width / 2 - 160, y: device.height / 2 - 240, width: 320, height: 480, clip: true, backgroundColor: '#37B34A' }); rootView.push(titlescreen); var sound = soundcontroller.getSound(); /* 監聽標題視圖出發的開始按鈕事件。 * 隱藏標題視圖,顯示游戲視圖,然后在游戲視圖中觸發一個自定義事件 */ titlescreen.on('titlescreen:start', function () { sound.play('levelmusic'); rootView.push(gamescreen); gamescreen.emit('app:start'); }); /* 當游戲視圖發出游戲結束事件,顯示標題試圖,以便讓用戶重新玩一遍 */ gamescreen.on('gamescreen:end', function () { sound.stop('levelmusic'); rootView.pop(); }); }; /* 資源文件加載后運行。 */ this.launchUI = function () {}; }); 在代碼開始處,我們使用 `import` 導入devkit引擎的兩個模塊,以及我們自定義的三個模塊 // 導入devkit的模塊 import device; import ui.StackView as StackView; // 導入用戶模塊 import src.TitleScreen as TitleScreen; import src.GameScreen as GameScreen; import src.soundcontroller as soundcontroller; 要注意的是,`Application.js` 文件本身也是一個模塊,它使用`Class`關鍵字繼承于`GC.Application`類,這個新類被定義為`exports`對象,當我們的程序被實例化后,它會被賦給全局屬性 `GC.app`,然后可以在項目代碼任何位置訪問它。既然我們在游戲中只需要一個程序,那么可以把它看作是單例的。 在程序的類定義函數中,我們可以使用`this`關鍵字引用這個類對象。一個簡陋的但可以運行的`Application.js`看起來是這樣的: `device`模塊包含了運行游戲的物理設備的信息,我們可以用它來獲取瀏覽器的信息,甚至是原型應用信息,這取決與如何運行這個游戲。 exports = Class(GC.Application, function () { // 在這里定義類.. // this === GC.app //=> true }); `GC.Application`類比較特殊,他有兩個回調函數 `initUI`與`launchUI`,它們會在就緒時檢查UI并運行。 `initUI`函數會在devkit引擎創建后并且場景圖形準備好后運行。如果定義了閃屏(Splash)或載入屏(Loading),那么`launchUI`函數在執行后它們會被移除。 GC DevKit 快速入門 -- 游戲概覽(二) http://www.rzrgm.cn/hangxin1940/archive/2013/04/11/3015553.html

      posted on 2013-04-11 00:39  黑暗伯爵  閱讀(790)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 花式道具play高h文调教| 日韩高清在线亚洲专区不卡| 97人人添人人澡人人澡人人澡| 狼色精品人妻在线视频| 亚洲无人区码二码三码区| 国产高颜值不卡一区二区| 欧美成人性色一区欧美成人性色区| 亚洲精品一区二区动漫| 国产在线观看网址不卡一区 | 婷婷丁香五月深爱憿情网| 人妻系列无码专区免费| 格尔木市| 人人爽人人澡人人人妻| 亚洲精品无码成人A片九色播放| 欧美视频网站www色| 国产成人精品亚洲日本片| 国产精品视频第一第二区| 青青草无码免费一二三区| 亚欧洲乱码视频在线专区| 日韩午夜一区二区福利视频| 在线国产毛片| 暖暖 免费 高清 日本 在线观看5 色老头亚洲成人免费影院 | 亚在线观看免费视频入口| 国产精品13页| 午夜福利国产精品视频| 亚洲国产综合精品2020| 久久久久久免费一区二区三区| 国产一区二区高清不卡| 青青草成人免费自拍视频| 国产精品久久久久久久9999| 日韩中文字幕av有码| 国产精品麻豆成人av网| 两个人的视频www免费| 西西444www高清大胆| 国产午夜福利高清在线观看| 亚洲日韩AV秘 无码一区二区| 国产最大成人亚洲精品| 九九热精品免费在线视频| 久久99精品久久久久久9| 国产精品永久久久久久久久久| 国内极度色诱视频网站|