hello, I'm testing a custom actor made with cogl, I apply the scale and
opacity behaviour, but with the opacity behaviour does not work (nothing is
showed), but instead of use a custom texture I use a clutter.Rectangle and
it works... so maybe is a bug or I'm doing something wrog.. anyone can test
it?
thks!
import gobject
import clutter
from clutter import cogl
class roundRec(clutter.Rectangle):
__gtype_name__ = 'roundRec'
__gproperties__ = {'color':(str, 'color', 'Color', None,
gobject.PARAM_READWRITE),}
def __init__(self):
clutter.Rectangle.__init__(self)
self._color = clutter.color_parse("red")
def set_color(self, color):
self._color = clutter.color_parse(color)
def do_set_property(self, pspec, value):
if pspec.name == 'color':
self._color = clutter.color_parse(value)
else:
raise TypeError('Unknown property '+pspec.name)
def do_get_property(self, pspec):
if pspec.name == 'color':
return self._color
else:
raise TypeError('Unknown property '+pspec.name)
def do_paint(self):
(x1, y1, x2, y2) = self.get_allocation_box()
paint_color = self._color
real_alpha = self.get_paint_opacity() * paint_color.alpha/255
paint_color.alpha = real_alpha
w = int(x2-x1)
h = int(y2-y1)
cogl.color(paint_color)
clutter.cogl.path_round_rectangle(0, 0, w, h, 30, 15)
clutter.cogl.path_fill()
def startEffect(stage, event, timeline, actor):
actor.set_opacity(0)
actor.show()
timeline.start()
if __name__ == '__main__':
s = clutter.Stage()
s.set_size(800, 600)
t = roundRec()
t.set_size(400,200)
s.add(t)
t.set_position(15,15)
t.hide()
timeline = clutter.Timeline(fps=25, duration=1000)
alpha = clutter.Alpha(timeline, clutter.sine_inc_func)
bh = clutter.BehaviourScale(0, 0, 1.0, 1.0, alpha)
bho = clutter.BehaviourOpacity(0, 255, alpha)
bh.apply(t) #scale
bho.apply(t) #opacity
s.connect('destroy', clutter.main_quit)
s.connect('button-press-event', startEffect, timeline, t)
s.show()
clutter.main()