Cocos2d-x 3.0 lua中的调度器

【Cocos2dx 3.3 Lua】定时器事件

Cocos2dx 3.x Lua 中使用定时器有两种方式:

    (1)self:scheduleUpdateWithPriorityLua(update, priority)

        > 参数一:刷新函数

        > 参数二:刷新优先级

        其中 self 为 Node类 的子类。

        该方法默认为每帧都刷新一次,无法自定义刷新时间间隔。

    停止调度:self:unscheduleUpdate()

    (2)self.mLeftTimeTimer = scheduler:scheduleScriptFunc(update, inteval, false)

        > 参数一:刷新函数

        > 参数二:每次刷新的时间间隔

        > 参数三:是否只执行一次。false为无限次。

        其中 scheduler 为定时器管理:cc.Director:getInstance():getScheduler()

停止调度:scheduler:unscheduleScriptEntry(self.mLeftTimeTimer)

    推荐使用第二种方式,因为比较通用。



1.1 使用scheduleUpdateWithPriorityLua函数

local Layer = class("Layer",function()
	return cc.Layer:create()
end)


function Layer:ctor()

end

--更新UI
function Layer:updateUI()

end


function Layer:Init()

	--注册每帧调度器(参数:每帧回掉,优先级)
	self:scheduleUpdateWithPriorityLua(updateUI,0)

	local function onNodeEvent(tag)
		if tag == "exit" then
			--取消注册
			self:unscheduleUpdate()
		end
	end

	self:registerScriptHandler(onNodeEvent)
end


1.2 使用scheduleScriptFunc函数:
function MineralWin:startRefreshLeftTime()
    local scheduler = cc.Director:getInstance():getScheduler()
    self.mLeftTimeTimer = scheduler:scheduleScriptFunc(handler(self, self.refreshLeftTime), 1, false)
end 

function MineralWin:stopRefreshLeftTime()
    local scheduler = cc.Director:getInstance():getScheduler()
    if self.mLeftTimeTimer then 
        scheduler:unscheduleScriptEntry(self.mLeftTimeTimer)
        self.mLeftTimeTimer = nil 
    end
end 



你可能感兴趣的:(Cocos2dx-lua)