I’m having some difficulty figuring out how to tween some colors for my Block class.
Block.selectedColor = {r=192,g=55,b=55,a=255}
Block.normalColor = {r=255,g=255,b=255,a=255}
local id = 0;
function Block:init(x,y,w,h)
-- you can accept and set parameters here
self.x = x
self.y = y
self.w = w or 150
self.h = h or 40
self.id = id;
print( "creating a block", self.id )
self.counters = { inputDisplay=0, outputDisplay=0 }
self.isInputSelected = false;
self.isOutputSelected = false;
self.isBlockSelected = false;
self.blockDrawColor = Block.normalColor;
id = id + 1;
end
function Block:draw()
-- Codea does not automatically call this method
rectMode( CORNER );
noFill();
stroke(color(self.blockDrawColor.r, self.blockDrawColor.g, self.blockDrawColor.b, self.blockDrawColor.a));
strokeWidth(3);
rect( self.x, self.y, self.w, self.h );
end
function Block:blockDeselected()
--make a couple tweens that toggle between Block.selectedColor and Block.normalColor
_r,_g,_b,_a = unpack(Block.selectedColor);
self.blockDrawColor = {r=_r,g=_g,b=_b,a=_a}
n = tween( 0.5,
self.blockDrawColor,
{ r=Block.normalColor.r,
g=Block.normalColor.g,
b=Block.normalColor.b,
a=Block.normalColor.a
}
)
--[[
s = tween( 0.01,
self.blockDrawColor,
{ r=Block.selectedColor.r,
g=Block.selectedColor.g,
b=Block.selectedColor.b,
a=Block.selectedColor.a
}
)
]]
--d = tween.delay( 0.1 )
--tween.sequence( d, n, d, s, d, n, d, s, d, n, d, s, d, n )
self.isBlockSelected = false;
end
Basically, I’m trying to have it flash between two colors when an individual block is deselected for a second or two. and i’m trying to do it with tweens instead of state variables/counters inside of draw().
the error i’m getting is:
... in pairs(tweens) do
c = c + 1
end
return c
end
:48: Parameter 'g' is missing from subject or isn't a number
stack traceback:
[C]: in function 'assert'
...in pairs(tweens) do c = c+1 end return c end
:48: in upvalue 'checkSubjectAndTargetRecursively'
:103: in upvalue 'checkStartParams'
:494: in function <...in pairs(tweens) do c= c+1 end return c end
:493>
(...tail calls...)
Block:111: in method 'blockDeselected'
Main:67: in function 'touched'