也许已经有答案了,但我找不到,也许是因为我不能提出正确的问题.我会尽力向我解释:
我创建了一个类,它帮助我创建按钮,当我单击该按钮时,该按钮正在执行类中的一个函数。我不知道是否有可能,但我希望在类之外使用抽头/触摸功能。
在这里,代码:
button.lua
function Button.new(posX, posY, size, title) -- constructor
local button = tools.loadText( title, posX, posY, "Roboto-Regular", size, {0/255, 0/255, 0/255})
group:insert( button )
button.alpha = 0
local buttonEffect = ButtonEffect.new(posX, posY, 600, button.contentHeight*2)
group:insert(buttonEffect)
button:toFront( )
button.x = posX
button.y = posY
button.size = size
button.title = title
function button:show(delay)
print( button.title.." --> show" )
button:addEventListener( "tap", button )
transition.to(button, { time = 900, alpha = 1, delay = delay, transition=easing.inQuart })
end
function button:tap(event)
print( self.title.." --> click" )
self:removeEventListener( "tap", self )
buttonEffect:click()
return true
end
我的main.lua
local button = require ("classes.Button")
button1 = button.new(540, 1300, 38, "LOGIN")
因为每次我创建按钮时都会有相同的动画,但是行为不同,所以当用户使点击在类之外拥有代码并能够在其他项目中重用这个类时,我希望在这里得到通知。
我希望我能解释清楚。
发布于 2014-07-11 14:48:19
如果我正确地理解了您,那么您需要从外部指定回调函数。
以下是两种方法:
创建时从外部传递方法
function Button.new(posX, posY, size, title, callback)
...
...
function button:tap(event)
print( self.title.." --> click" ) self:removeEventListener( "tap", self )
buttonEffect:click()
callback();
return true
end
end
button1 = button.new(540, 1300, 38, "LOGIN", function()
print("Button clicked");
end);
在创建之后指定方法
function Button.new(posX, posY, size, title, callback)
...
...
function button:tap(event)
print( self.title.." --> click" ) self:removeEventListener( "tap", self )
buttonEffect:click()
if (self.callback) then -- Just to be safe
self.callback();
end
return true
end
end
button1 = button.new(540, 1300, 38, "LOGIN");
button1.callback = function()
print("Button clicked");
end
https://stackoverflow.com/questions/24685039
复制相似问题