Lua CallFunc小技巧

此篇只是lua初学者的一些小总结,只是为了让同行们少走点弯路,大神可以绕行

cc.CallFunc:create()方法为开发者提供的是两个参数,第一个参数是回调的方法,第二个参数可以是开发者自定义的table

用法:

回调方法:

可能是自我习惯,我希望将动作的回调放置在一个方法中,这个功能则通过table来实现,table中定义不同的参数,来进行if 判断

友情提示:lua中如果使用某个方法,最好在调用上面进行创建,否则会报出nil value错误(初入lua,受害很深,诸位珍重)]

你也可以直接这么写:
cc.CallFunc:create(function(node, value)
– 实现代码
end, {tag=0})

嗯,我的那种方法,主要是为了让动作的回调统一管理,如果出错了,在整个项目中查找这些动作,太乱,你这种就没有必要传入table了,没有意义

没明白什么意思

function StartScene:gotoNextScene()
local scene=require(“app.scenes.SelectScene”).new()
cc.Director:getInstance():replaceScene(scene)
end
function StartScene:addSlider()

local progressto=cc.ProgressTo:create(5,100);
local slider=display.newProgressTimer("loading.png", display.PROGRESS_TIMER_BAR)
slider:setPosition(cc.p(display.cx,display.cy))
slider:setMidpoint(cc.p(0,1));
slider:setBarChangeRate(cc.p(1,0));
slider:setPercentage(0);
local label=cc.Label:createWithTTF("Loading","fonts/arial.ttf",30)
label:setPosition(cc.p(200,30))
label:setTextColor(cc.c4b(250, 0, 0,255))
slider:addChild(label,1)

local seq= cc.Sequence:create(progressto,cc.DelayTime:create(.2),cc.CallFunc:create(gotoNextScene(),self))
slider:runAction(seq)
self:addChild(slider,1)

end
为什么我这样写还是提示没有值呢

楼主啊。你用ide么。我用ide的seekWidgetByTag获取cocostudio导出的lua ui工程。结果报错invalid arguments in function ‘lua_cocos2dx_ui_Helper_seekWidgetByTag’。知道什么情况么。。