大海教你学手游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
local cclog = function(...)
    print(string.format(...))
end
-- for CCLuaEngine traceback
function __G__TRACKBACK__(msg)
    cclog("----------------------------------------")
    cclog("LUA ERROR: " .. tostring(msg) .. "\n")
    cclog(debug.traceback())
    cclog("----------------------------------------")
    return msg
end
local function main() --入口函数
    collectgarbage("collect")
    -- avoid memory 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)
    --create scene 1。创建一个场景
    local MS=require("MyScene")
    local ms_scene=MS:create()
    --2,显示这个场景
    if cc.Director:getInstance():getRunningScene() then
        cc.Director:getInstance():replaceScene(ms_scene)
    else
        cc.Director:getInstance():runWithScene(ms_scene)
    end
end
local status, msg = xpcall(main, __G__TRACKBACK__)
if not status then
    error(msg)
end

4.        定义自己的场景
以下是场景类的封装,并在屏幕显示背景和英雄,运行结果如下:
 

代码如下:
1.        --定义第一个场景
2.        --定义一个类   MyScene 继承cc.Scene
3.        local MyScene=class("MyScene",function ()
4.                return cc.Scene:create()
5.        end)
6.        --创建函数
7.        function MyScene:create()
8.            print("MyScene:create")
9.                local ms=MyScene.new()
10.                ms:addChild(ms:init())
11.                return ms
12.        end
13.        --构造函数
14.        function MyScene:ctor()
15.            print("MyScene:ctor")
16.           --添加成员属性
17.                self.winsize=cc.Director:getInstance():getWinSize()
18.        end
19.        --初始化函数
20.        function MyScene:init()
21.            print("MyScene:init")
22.                local layer=cc.Layer:create()
23.            --添加背景图片层到场景
24.            local sp_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.                local sp=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.                local txt01=cc.Label:createWithSystemFont("9秒课堂","",40)
38.                layer:addChild(txt01)
39.            txt01:setPosition(self.winsize.width/2,self.winsize.height/2+70)
40.            --添加人物层
41.            local hero01=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.                return layer
48.        end
49.       
50.        return MyScene

你可能感兴趣的:(大海教你学手游2015CocosLua第一季_01环境搭建与场景封装)