您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-lua04第一个工程

2016-04-07 13:01 453 查看
一、新建工程

初次建工程的准备工作:

之后的建工程,相信用过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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: