3

コロナの長方形の色を取得する方法を教えてもらえますか?その長方形はすでに色で塗りつぶされているので、長方形に触れたときにその色を取得したいと思います。

4

4 に答える 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 の色を取得する別の方法でもあります。

  1. 色のテーブルを作成する

    local colors = {    {255,0,0},  {0,0,255},  {0,255,0},  {255, 255, 0},  {255,0,255}}
    
  2. 次に、長方形を作成するときに、次のようにします。

    local rect = display.newRect(0, 0,100,100)
    rect.color = math.random(1,5)
    rect:setFillColor(unpack(colors[rect.color]))
    
  3. 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 に答える