大海教你學手遊2015CocosLua第一季_01環境搭建與情境封裝,2015cocoslua_01

來源:互聯網
上載者:User

大海教你學手遊2015CocosLua第一季_01環境搭建與情境封裝,2015cocoslua_01

課程地址:http://ke.qq.com/cgi-bin/courseDetail?course_id=78017

cocos2d-x直播課交流群: 461039382(發布每節課視頻和資料)

網盤資料下載:http://pan.baidu.com/s/1dDvZvAp ( 密碼要進群才有)

         Cocos是一款跨平台移動遊戲引擎,實際上是把不同平台的圖形處理、互動事件通過

C++實現了統一Api,見:


中間藍色的部分Cocos2d-x就是通過C++調用ios、Android等平台的圖形庫OpenGL,同時平台的使用者互動事件傳遞給Cocos2d-x的導演類,這樣開發人員就可以在Cocos2d-x基礎上使用C++的Api開發跨平台的手機遊戲和應用了。

         當然開發人員可以選擇三種語言

1.  使用C++

a)        文法嚴謹,代碼高效

b)        方便定製對於底層系統平台的功能調用(C++可以調OC,C++可以調Java)

c)        跟別人說你會C++豈不是很牛嗎!

2.  使用Lua

a)        代碼簡單、弱語言

b)        靈活的代碼結構

c)        高效開發

d)        可以動態更新(這個最吊,不用重裝App就能更新)

3.  使用JavaScript

a)        可以讓原來做網頁的開發人員上手

b)        可以將遊戲發布到H5瀏覽器

好吧!我們從Lua學起,先入門,再精通,從Lua入門是不錯的選擇,從C++開始對於開發人員來講有一定難度。

第一課要解決以下問題:

1.  要解決如何搭建開發環境

a)        首先安裝jdk1.7

b)        再安裝Python2.7 (不能安裝高版本)

c)        安裝CocosCode IDE(1.2 ,2.0版居然沒有提示,後續再說吧)

d)        安裝Cocos2d-x3.2源碼(後面會講cocos2d-x3.6和Quick,如果上來就是3.6 MVC估計使用者都會蒙圈,不知道引擎團隊怎麼想的,我認為這個MVC影響了使用者對CocosApi的統一理解,應該作為可選包,不應該作為預設範本)

e)        配置CocosCodeIDE

相關資源如,可以到網盤下載:

2.  Cocos的核心概念

a)        導演 Director(控制所有介面的顯示和切換,其實還有事件分發、垃圾處理等)

b)        情境Scene(就是遊戲的一個介面,每個介面都可以有很多層)

c)        圖層Node(文字、圖片、菜單、動畫等在情境中的每一個繪圖元素都是一個圖層)

d)        動作Action(是對Node的變換的封裝)

如:


做遊戲就是定義多個情境畫面,然後通過Director實現畫面的切換。

3.  如何理解第一個工程的檔案結構

a)        Res 檔案夾儲存遊戲中的所有資源片、聲音、動畫、關卡檔案等

b)        Src 是源碼檔案夾儲存遊戲開發的lua原始碼

Main.lua 是入口檔案,主要是定義了一個情境然後運行這個情境,代碼如下:

 

require"Cocos2d"--引用cocos lua函數庫

-- cclog

localcclog =function(...)

    print(string.format(...))

end

-- for CCLuaEngine traceback

function__G__TRACKBACK__(msg)

    cclog("----------------------------------------")

    cclog("LUA ERROR:" ..tostring(msg) .."\n")

    cclog(debug.traceback())

    cclog("----------------------------------------")

    returnmsg

end

localfunctionmain()--入口函數

    collectgarbage("collect")

    -- avoidmemory leak

    collectgarbage("setpause",100)

    collectgarbage("setstepmul",5000)

    --添加檔案搜尋路徑

    cc.FileUtils:getInstance():addSearchPath("src")

    cc.FileUtils:getInstance():addSearchPath("res")

    --設定螢幕適配cc.Director:getInstance():getOpenGLView():setDesignResolutionSize(960,640, 0)

    --createscene 1。建立一個情境

    localMS=require("MyScene")

    localms_scene=MS:create()

    --2,顯示這個情境

    ifcc.Director:getInstance():getRunningScene()then

        cc.Director:getInstance():replaceScene(ms_scene)

    else

        cc.Director:getInstance():runWithScene(ms_scene)

    end

end

localstatus,msg = xpcall(main,__G__TRACKBACK__)

ifnotstatusthen

    error(msg)

end

 

4.  定義自己的情境

以下是情境類的封裝,並在螢幕顯示背景和英雄,運行結果如下:

 

代碼如下:

1.--定義第一個情境

2.--定義一個類  MyScene繼承cc.Scene

3.localMyScene=class("MyScene",function ()

4.returncc.Scene:create()

5.end)

6.--建立函數

7.functionMyScene:create()

8.    print("MyScene:create")

9.localms=MyScene.new()

10.         ms:addChild(ms:init())

11.         returnms

12.     end

13.     --建構函式

14.     functionMyScene:ctor()

15.         print("MyScene:ctor")

16.        --新增成員屬性

17.         self.winsize=cc.Director:getInstance():getWinSize()

18.     end

19.     --初始化函數

20.     functionMyScene:init()

21.         print("MyScene:init")

22.         locallayer=cc.Layer:create()

23.         --添加背景圖片層到情境

24.         localsp_bk=cc.Sprite:create("bbg_burning_land.jpg")

25.         layer:addChild(sp_bk)

26.         sp_bk:setPosition(self.winsize.width/2,self.winsize.height/2)

27.         --添加人物層到情境

28.         localsp=cc.Sprite:create("kick07.png")

29.         layer:addChild(sp)

30.         sp:setAnchorPoint(0,1)

31.         sp:setPosition(self.winsize.width/2,self.winsize.height/2)

32.         sp:setRotation(40)

33.         sp:setLocalZOrder(3)--設定當前圖層的顯示順序

34.         --讓人物運行動作

35.         --sp:runAction(cc.RotateBy:create(5,720))

36.         --添加文字層

37.         localtxt01=cc.Label:createWithSystemFont("9秒課堂","",40)

38.         layer:addChild(txt01)

39.         txt01:setPosition(self.winsize.width/2,self.winsize.height/2+70)

40.         --添加人物層

41.         localhero01=cc.Sprite:create("hero01.png")

42.         hero01:setAnchorPoint(0.5,0.5)

43.         hero01:setPosition(480,320)

44.         hero01:setLocalZOrder(4)

45.         layer:addChild(hero01)

46.         hero01:setScale(0.3)--縮放到原有尺寸的30%

47.         returnlayer

48.     end

49.      

50.             returnMyScene

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.