2014-12-12 8 views
0

kivy의 캔버스 사각형 배경에서 페이드 인/아웃 애니메이션을 얻을 수있는 방법이 있습니까? 나는 Clock.schedule_interval() 기능을 사용하여 그것을 시도했다. 그러나 동시성과 데이터 증가와 관련하여 몇 가지 문제가 발생했습니다. 다음과 같이 나의 시도의Kivy Fade-In 애니메이션

하나는 같습니다

def calendarClicked(self, *args): 
    self.alpha = 1.0 
    self.alphaDelta = 0.01 

    self.root.canvas.add(Color(1,0,0,self.alpha)) 
    self.root.canvas.add(Rectangle(size=self.root.size)) 

    def fadeIn(self, dt): 

     self.alpha -= self.alphaDelta 
     self.root.canvas.add(Color(1,0,0,self.alpha)) 
     self.root.canvas.add(Rectangle(size=self.root.size)) 

     return self.alpha >= 0.5 

    Clock.schedule_interval(partial(fadeIn, self), 0.1) 

또 다른 아이디어는 kivy.animation를 사용하는 것이 었습니다. 그러나 나는 객체/위젯의 위치 대신에 색을 편집하는 방법을 찾지 못했다.

미리 감사드립니다.

답변

2

위젯과 마찬가지로 캔버스 지침에 Animation을 사용할 수 있습니다. 문제는 캔버스 지침을 전혀 수정하지 않는다는 것입니다. 캔버스 지침을 계속 추가하는 것입니다. 지침을 한 번만 추가 한 다음 Animation을 통해 값을 업데이트해야합니다.

def calendarClicked(self, *args): 
    if not hasattr(self, 'color'): 
     with self.root.canvas: 
      self.color = Color(1, 0, 0, 0) 
      self.rect = Rectangle(size=self.root.size) 

    self.color.a = 0 
    anim = Animation(a=1.0) 
    anim.start(self.color)