谁能帮我找出如何在电晕中获得矩形的颜色?我已经用颜色填充了那个矩形,所以现在我想在触摸矩形时得到那个颜色。
4 回答
创建你的矩形:
local rectangle = display.newRect(0, 0, 100, 100)
将您的颜色以 RGBA(您可以省略 A)格式放入表格中,并将其存储为矩形的“自定义属性”:
rectangle.fillColor = {110, 30, 25}
通过返回表格值的 unpack 函数的魔力,将表格传递给 setFillColor:
rectangle:setFillColor( unpack(rectangle.fillColor) )
现在你总能得到这样的颜色:
print( unpack(rectangle.fillColor) ) --> 110 30 25
或者
print( rectangle.fillColor ) -- simply returns the table
或将每种颜色放入变量中:
local red, green, blue, alpha = unpack(rectangle.fillColor)
你会看到这对其他事情也能派上用场。
编辑
刚刚想到了另一种很酷的方法,通过劫持 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
现在您可以使用 setFillColor 将颜色设置为正常,并使用 getFillColor 将其返回:)
rectangle:setFillColor(100, 30, 255, 255)
print(rectangle:getFillColor())
简而言之:您无法“获得”填充颜色。你必须自己保存它..
这也是获取矩形颜色的另一种方法。
创建一个颜色表
local colors = { {255,0,0}, {0,0,255}, {0,255,0}, {255, 255, 0}, {255,0,255}}
然后当你创建你的矩形时,让它看起来像这样:
local rect = display.newRect(0, 0,100,100) rect.color = math.random(1,5) rect:setFillColor(unpack(colors[rect.color]))
现在,如果您想获得矩形的颜色,请这样做
local appliedcolor = colors[rect.color];
感谢https://forums.coronalabs.com/topic/18414-get-fill-color-of-an-object/
DisplayObject 的许多属性值,包括填充颜色的 RGB 值,可以使用object._properties
. 在 Build 2014.2511 中添加了 DisplayObject 自省,即在提出此问题两年后。
该信息以 JSON 格式的字符串形式返回,因此该json.*
库用于提取感兴趣的属性(properties)。
假设 DisplayObject 称为object
,您将执行以下操作:
local json = require( "json" )
local decoded, pos, msg = json.decode( object._properties )
if not decoded then
-- handle the error (which you're not likely to get)
else
local fill = decoded.fill
print( fill.r, fill.g, fill.b, fill.a )
end