大海教你學手遊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
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。