好吧,我刚刚获得了Corona SDK的免费试用版,所以我是Corona的新手。 我想为我的游戏制作一个按钮类。 它有一个白色的背景和黑色的文字。 我希望它按下时反转。 问题在于绘图事件会干扰触摸事件,因为绘图事件会设置颜色,我会在每个enterFrame中调用绘图事件。 如果我可以测试以查看屏幕是否被触摸以及它在enterFrame事件内部被触摸的位置能够解决我的问题,但是据我所知,测试这些东西的方法是在触摸屏内事件。Corona SDK反转按钮
我将如何完成反转?
这里是我的代码:
--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;
感谢,
〜耶
编辑:更新的代码注释
编辑:好吧,我取得了一些进展,但现在你的手指必须移动它保持倒置
编辑:Almo圣现在得到了它。该按钮反转并返回,但如果您触摸该按钮并且不松开手指,则将手指从按钮上滑下即可保持倒置。