任何人都可以帮我找出如何在日冕中获得矩形的颜色?那个矩形我已经填充了颜色,所以现在我想在触摸矩形时获得那种颜色。
答案 0 :(得分:6)
创建矩形:
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())
答案 1 :(得分:0)
简而言之:你无法“获得”填充色。你必须自己保存..
答案 2 :(得分:0)
这也是获取矩形颜色的另一种方法。
创建一个颜色表
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]))
现在,如果你想获得rect的颜色就像这样
local appliedcolor = colors[rect.color];
感谢https://forums.coronalabs.com/topic/18414-get-fill-color-of-an-object/
答案 3 :(得分:0)
可以使用object._properties
检查DisplayObject的许多属性值,包括填充颜色的RGB值。在Build 2014.2511中添加了DisplayObject自省,即在提出此问题两年后。
信息以JSON格式的字符串形式返回,因此json.*
库用于提取感兴趣的属性(属性)。
假设一个名为object
的DisplayObject,您可以执行以下操作:
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