本文章为使用基本的cocos2dx-lua的基本内容。
下面的main.lua将只在本文出现一次,以后的同系列的基础内容将不再出现。
--main.lua的内容(代码说明,可以参考我的《一个最简单的cocos2dx-lua 演示说明》博文介绍)。
cc.FileUtils:getInstance():setPopupNotify(false)
cc.FileUtils:getInstance():addSearchPath("src/")
cc.FileUtils:getInstance():addSearchPath("res/")
require "cocos.init"
cclog=function(...)
print(string.format(...))
end
local function main()
collectgarbage("collect")
collectgarbage("setpause",100)
collectgarbage("setstepmul",5000)
local director=cc.Director:getInstance()
--最后一个参数是分辨率方案。 director:getOpenGLView():setDesignResolutionSize(1280,720,0)
director:setDisplayStats(true)
director:setAnimationInterval(1.0/60)
local scene=require("TestScene")
local gameScene=scene.create()
if cc.Director:getInstance():getRunningScene() then
cc.Director:getInstance():replaceScene(gameScene)
else
cc.Director:getInstance():runWithScene(gameScene)
end
end
local status, msg = xpcall(main, __G__TRACKBACK__)
if not status then
error(msg)
end
--TestScene.lua内容如下:实现效果为在画面中来回碰撞。
size=cc.Director:getInstance():getVisibleSize()
local testScene=class("Test",
function()
return cc.Scene:create()
end
)
--初始化
function testScene:ctor()
end
function testScene:create()
local scene=testScene.new() --创建场景。
local layer=testScene:createLayer() --创建层。
scene:addChild(layer) --将层添加到场景中
return scene --返回场景
end
function testScene:createLayer()
local layer=cc.Layer:create() --创建场景
local sprite=cc.Sprite:create("HelloWorld.png") --创建精灵
sprite:setPosition(cc.p(size.width/2,size.height/2))
layer:addChild(sprite)
local ss=sprite:getContentSize()
local xdec,ydec=5,5
--循环与调度
local function myupdate()
local x,y=sprite:getPosition()
if x>=size.width-ss.width/2 or y>=size.height-ss.height/2 then
xdec,ydec=-5,-5
elseif x<=ss.width/2 or y<ss.height/2 then
xdec,ydec=5,5
end
sprite:setPosition(cc.p(x+xdec,y+ydec))
end
sprite:scheduleUpdateWithPriorityLua(myupdate,0)
--层处理事件
function onNodeEvent(tag)
if (tag=="exit") then
sprite:unscheduleUpdate()
end
end
layer:registerScriptHandler(onNodeEvent)
return layer --返回层。
end
return testScene