コロナの長方形の色を取得する方法を教えてもらえますか?その長方形はすでに色で塗りつぶされているので、長方形に触れたときにその色を取得したいと思います。
3846 次
4 に答える
7
長方形を作成します。
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())
于 2012-06-28T10:35:45.113 に答える
0
これは、rect の色を取得する別の方法でもあります。
色のテーブルを作成する
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/に感謝します。
于 2016-01-16T07:23:21.783 に答える
0
つまり、塗りつぶしの色を「取得」することはできません。あなたはそれを自分で保存する必要があります..
于 2013-11-13T11:30:32.963 に答える