我正在尝试为我的游戏制作一个按钮类。它具有白色背景和黑色文本。我希望它在按下时反转。
问题是绘图事件干扰了触摸事件,因为绘图事件设置了颜色,并且我在每个 enterFrame 调用绘图事件。如果我可以测试屏幕是否被触摸以及在 enterFrame 事件中被触摸的位置可以解决我的问题,但据我所知,测试这些东西的唯一方法是在触摸事件中。
我将如何完成反转?
这是我的代码:
--Button Class
local button = {}
local button_mt = { __index = button } -- metatable
--button.new function
function button.new (x, y, width, height, text) -- constructor
local newButton = {
x = x,
y = y,
width = width,
height = height,
text = text,
rect = display.newRoundedRect (x-width/2, y-height/2, width, height, 10),
displayText = display.newText (text, x, y, native.systemFont, 16),
inverted = false,
timer = 5
};
return setmetatable( newButton, button_mt );
end
--Button activate function
function button:activate()
self.rect:addEventListener ("touch", self);
self.displayText:setTextColor (0, 0, 0);
end
--Button touch event
function button:touch (event)
if event.phase == "ended" or event.phase == "cancelled" then
self.inverted = false;
else
self.inverted = true;
end
end
--Button draw function
function button:draw()
self.displayText.x = self.x;
self.displayText.y = self.y;
self.rect.x = self.x;
self.rect.y = self.y;
self.rect.width = self.width;
self.rect.height = self.height;
self.displayText.text = self.text;
if self.inverted then
self.displayText:setTextColor (255, 255, 255);
self.rect:setFillColor (0, 0, 0);
else
self.displayText:setTextColor (0, 0, 0);
self.rect:setFillColor (255, 255, 255);
end
end
return button;
编辑:好的,我到了某个地方,但现在你的手指必须移动才能保持倒立
现在差不多明白了。按钮反转并变回,但如果您触摸按钮并且不松开手指,将手指滑离按钮,它会保持反转状态。