cocos2d-lua04第一个工程

来源:互联网 发布:淘宝浏览app赚佣金 编辑:程序博客网 时间:2024/06/03 12:52


一、新建工程

初次建工程的准备工作:

之后的建工程,相信用过eclipse的都会的吧。继续。。。先睹为快:



-----------》    先来know一眼程序入口:main.lua    《-------------


主要干两件事:1.创建场景;2.显示场景



require "Cocos2d"                                                                             --引用cocos lua函数库,避免重复引用
-- cclog                                                                                                 --声明cclog函数,用于打印日志信息
local cclog = function(...)
    print(string.format(...))
end


-- for CCLuaEngine traceback                              --声明__G__TRACKBACK__(msg)函数,当程序出错时,由下面的 xpcall(main, __G__TRACKBACK__)调用,输出堆栈信息
function __G__TRACKBACK__(msg),
    cclog("----------------------------------------")
    cclog("LUA ERROR: " .. tostring(msg) .. "\n")
    cclog(debug.traceback())
    cclog("----------------------------------------")
    return msg
end


local function main()                                                        --入口函数
    collectgarbage("collect")                                             --垃圾收集器,括号的的参数表示:执行一次全垃圾收集周期。还有其他option tag供选择


    -- avoid memory leak                                                   --避免内存泄露
    collectgarbage("setpause", 100)      --setpause取arg/100的值作为垃圾收集暂停时长
    collectgarbage("setstepmul", 5000)      --setstepmul取arg/100的作为补偿的增幅,新步长 = 旧步长*(arg/100)


    --添加文件搜索路径
    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")                            --加载“MyScene”模块,返回值是table类型全局变量
    local ms_scene=MS:create()                            --通过静态函数create创建场景


    --2,显示这个场景
    if cc.Director:getInstance():getRunningScene() then                 --[[判断当前有没有正在运行的场景;有,则用ms_scene替换它;否则,直接运行ms_scene

        cc.Director:getInstance():replaceScene(ms_scene)             --总之,此处运行的必须是进入ms_scene  场景 ]]
    else
        cc.Director:getInstance():runWithScene(ms_scene)
    end
end

local status, msg = xpcall(main, __G__TRACKBACK__)             --真正的程序入口,由Lua提供,调用main函数,并且可以捕获到错误。返回值为错误状态和错误消息
if not status then                                                                                    --xpcall(f , err)  f:要调用的函数;err:捕获到错误的时候调用的函数
    error(msg)
end





-----------------------》     MyScene.lua    《-----------------------------


--定义第一个场景 
--定义一个类   MyScene 继承cc.Scene
local MyScene=class("MyScene",function ()       --通过Lua创建对象,class(classname,super),classname为字符串类型函数名,super为调用父类构造函数。“快捷键F3”源码
return cc.Scene:create()
end)


-------------------------------------------------1.创建函数-------------------------------------------------------------------------------------
function MyScene:create()           --声明MyScene:create() 函数,在main.lua中通过scene.create()调用
    print("MyScene:create")
local ms=MyScene.new()     --创建MyScene对象,new()函数会调用   构造函数 MyScene:ctor()来   初始化MyScene对象
ms:addChild(ms:init())         --MyScene对象ms调用初始化函数,将层添加到场景,返回场景对象
return ms
end


------------------------------------------------2.构造函数----------------------------------------------------------
function MyScene:ctor()
    print("MyScene:ctor")
   --添加成员属性
self.winsize=cc.Director:getInstance():getWinSize()
end


-------------------------------------------------3.初始化函数------------------------------------------------------
function MyScene:init()
    print("MyScene:init")
local layer=cc.Layer:create()
    --添加背景图片层到场景
    local sp_bk=cc.Sprite:create("bbg_burning_land.jpg")
    layer:addChild(sp_bk)
    sp_bk:setPosition(self.winsize.width/2,self.winsize.height/2)
-- 添加人物层到场景
local sp=cc.Sprite:create("kick07.png")
layer:addChild(sp)
sp:setAnchorPoint(0,1)                                                                          --为精灵添加锚点
sp:setPosition(self.winsize.width/2,self.winsize.height/2)             --为精灵设置位置

sp:setRotation(40)                                                                                 --旋转

sp:setLocalZOrder(3) --设置当前图层的显示顺序                             --zorder垂直屏幕方向向外为Z轴正方向,值越大,显示在最外层
--让人物运行动作
--sp:runAction(cc.RotateBy:create(5,720))
--添加文字层
local txt01=cc.Label:createWithSystemFont("第一个LuaGame","",40)
layer:addChild(txt01)
    txt01:setPosition(self.winsize.width/2,self.winsize.height/2+70)
    --添加人物层
    local hero01=cc.Sprite:create("hero01.png")
    hero01:setAnchorPoint(0.5,0.5)
    hero01:setPosition(480,320)
    hero01:setLocalZOrder(4)
    layer:addChild(hero01)
    hero01:setScale(0.3)--缩放到原有尺寸的30%
return layer
end


return MyScene

0 0
原创粉丝点击