任何人都可以帮我找出如何在日冕中获得矩形的颜色?那个矩形我已经填充了颜色,所以现在我想在触摸矩形时获得那种颜色.
创建矩形:
local rectangle = display.newRect(0, 0, 100, 100)
Run Code Online (Sandbox Code Playgroud)
将您的颜色放在RGBA(您可以省略A)格式的表格中,并将其存储为矩形的"自定义属性":
rectangle.fillColor = {110, 30, 25}
Run Code Online (Sandbox Code Playgroud)
通过unpack函数的魔力,它返回一个表的值,将表传递给setFillColor:
rectangle:setFillColor( unpack(rectangle.fillColor) )
Run Code Online (Sandbox Code Playgroud)
现在你总能得到这样的颜色:
print( unpack(rectangle.fillColor) ) --> 110 30 25
Run Code Online (Sandbox Code Playgroud)
要么
print( rectangle.fillColor ) -- simply returns the table
Run Code Online (Sandbox Code Playgroud)
或者将每种颜色放在一个变量中:
local red, green, blue, alpha = unpack(rectangle.fillColor)
Run Code Online (Sandbox Code Playgroud)
你会看到这对其他东西也会派上用场.
编辑
通过劫持setFillColor函数,想到了另一种很酷的方法:
local function decorateRectangle(rect)
rect.cachedSetFillColor = rect.setFillColor -- store setFillColor function
function rect:setFillColor(...) -- replace it with our own function
self:cachedSetFillColor(...)
self.storedColor = {...} -- store color
end
function rect:getFillColor()
return unpack(self.storedColor)
end
end
local rectangle = display.newRect(0, 0, 100, 100)
decorateRectangle(rectangle) -- "decorates" rectangle with more awesomeness
Run Code Online (Sandbox Code Playgroud)
现在您可以使用setFillColor将颜色设置为正常,并使用getFillColor返回它:)
rectangle:setFillColor(100, 30, 255, 255)
print(rectangle:getFillColor())
Run Code Online (Sandbox Code Playgroud)