Cocos 2dx Lua定時器事件

2021-10-09 19:22:40 字數 3049 閱讀 3509

在cocos 2dx + lua中使用的定時器主要有兩種:

1、self:scheduleupdatewithprioritylua(update, priority)

(1)引數一update:重新整理函式(需要自定義)

(2)引數二priority:重新整理優先順序

其中 self 為 node類 的子類。該方法預設為每幀都重新整理一次,無法自定義重新整理時間間隔。

2、scheduler:schedulescriptfunc(update, inteval, false)

(1)引數一update:重新整理函式(需要自定義)

(2)引數二inteval:每次重新整理的時間間隔

(3)引數三false:是否只執行一次。false為無限次

其中scheduler為定時器管理:cc.director:getinstance():getscheduler()。由於第二種方法更加靈活,所以使用的比較多一點。

--使用scheduleupdatewithprioritylua函式:

spritezorderwithframecall=class("spritezorderwithframecall",function()

return cc.sprite:create()

end)

spritezorderwithframecall.ctor=function(self)

self.zorder=1

local size=cc.director:getinstance():getwinsize()

self:setposition(size.width/2,size.height/2)

self:setscalex(12)

endspritezorderwithframecall.init=function(self,texture)

self:settexture(texture)

self:setlocalzorder(self.zorder)

self:scheduleupdatewithprioritylua(function(dt)

self:schedule()

end,0)

endspritezorderwithframecall.schedule=function(self)

cclog("")

local function reordersprite()

cclog("call "..os.clock())

local order=self:getlocalzorder()

if order < -1 then

self.zorder=1

elseif order >10 then

self.zorder=-1

endself.zorder=self.zorder+3

self:setlocalzorder(self.zorder)

endreordersprite()

endspritezorderwithframecall.create=function(self)

local sprite=self.new()

sprite:init("images/grossini.png")

return sprite

endreturn spritezorderwithframecall

--使用scheduler:schedulescriptfunc(update,interval,false)的例項如下:

--實現定時調整精靈z軸位置

spritezorderwithframecall=class("spritezorderwithframecall",function()

return cc.sprite:create()

end)

spritezorderwithframecall.ctor=function(self)

self.zorder=1

local size=cc.director:getinstance():getwinsize()

self:setposition(size.width/2,size.height/2)

self:setscalex(12)

endspritezorderwithframecall.init=function(self,texture)

self:settexture(texture)

self:setlocalzorder(self.zorder)

self:scheduleupdatewithprioritylua(function(dt)

self:schedule()

end,0)

endspritezorderwithframecall.schedule=function(self)

cclog("")

local function reordersprite()

cclog("call "..os.clock())

local order=self:getlocalzorder()

if order < -1 then

self.zorder=1

elseif order >10 then

self.zorder=-1

endself.zorder=self.zorder+3

self:setlocalzorder(self.zorder)

endreordersprite()

endspritezorderwithframecall.create=function(self)

local sprite=self.new()

sprite:init("images/grossini.png")

return sprite

endreturn spritezorderwithframecall

Cocos2d x Lua基本操作

1.lua庫引用 目錄新增 lua lua luajit include lib新增 lua51.lib 2.開啟lua庫 示例 lua state pl lua open luaopen base pl luaopen math pl luaopen string pl 3.讀取lua值 示例 1...

cocos2dx lua優化總結

渲染效率 紋理格式 執行效率 記憶體 包大小 cpp view plain copy 安卓啟用4444紋理 iftargetplatform cc.platform os android then cc.texture2d setdefaultalphapixelformat cc.texture2...

Cocos2dx lua 啟動流程

cocos2dx 版本 3.x,工具 vs2013 babelua外掛程式 1.lua工具,babelua 2.cocos2dx 建立lua工程 windows 7下,配置好cocos2dx環境後,使用命令列建立專案。cocos new mylua1 p com.your company.mygam...