cocos2dx-lua基础内容之 使用调度器

本文章为使用基本的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值