From b4060168a19582b2025bb219ac162587945924be Mon Sep 17 00:00:00 2001 From: ribet Date: Tue, 6 Nov 2007 16:01:14 +0000 Subject: Animations en utilisant un seul timer, toutes les animations sont alors synchrones. Les animations sont améliorées. Attention : il faut installer le dernier paquet tkanim. Il reste à faire MPath --- src/MTools/Anim/MTranslator.pm | 49 ++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 26 deletions(-) (limited to 'src/MTools/Anim/MTranslator.pm') diff --git a/src/MTools/Anim/MTranslator.pm b/src/MTools/Anim/MTranslator.pm index 8c8baa2..3211eb9 100644 --- a/src/MTools/Anim/MTranslator.pm +++ b/src/MTools/Anim/MTranslator.pm @@ -38,9 +38,8 @@ package MTools::Anim::MTranslator; use strict; use MTools; -use Anim; -use Anim::Pacing::Linear; -use Anim::Path::Rectilinear; +use Tk::Anim; +Tk::Anim::synchronous(25.0); use vars qw /@ISA/; @@ -95,35 +94,33 @@ sub stop { sub start { my ($self) = @_; - my $pacing = new Anim::Pacing::Linear (-duration => $self -> mget ('duration')); + $self -> {__xdep} = my $xdep = $self -> mget ('from_x'); $self -> {__ydep} = my $ydep = $self -> mget ('from_y'); - my $animationpath = new Anim::Path::Rectilinear ( - -xdep => 0, - -ydep => 0, - -xdest => $self -> mget ('to_x') - $xdep, - -ydest => $self -> mget ('to_y') - $ydep, - ); $self -> {__x} = $xdep; $self -> {__y} = $ydep; - $self -> {__animation} = my $animation = new Anim ( - -pacing => $pacing, - -resources => [ - $animationpath, - -command => sub { $self -> event (@_)}, - -endcommand => sub { - $self -> {__animation} = undef; - $self -> notify ('ANIMATION_END'); - }, - ], - -stopcommand => sub { - $self -> {__animation} = undef; - $self -> notify ('ANIMATION_ABORD', $self -> {__x}, $self -> {__y}); - }, - -loop => $self -> mget ('loop'), + $self -> {__animation} = my $animation = $zinc->Anim ( + -pacing => 'linear', + -duration => $self -> mget ('duration') * 1000, + -command => sub { $self -> event (@{$_[0]})}, ); - $animation -> start (); + $animation->addresource('coords', + -path => [[0, 0], [$self -> mget ('to_x') - $xdep, + $self -> mget ('to_y') - $ydep]]); + my $loop = $self -> mget ('loop'); + if ($loop != 0) { + $self -> {__animation} = $animation -> repeat (); + } + $self -> {__animation} -> whenterminated (sub { + $self -> {__animation} = undef; + $self -> notify ('ANIMATION_END'); + }); + $self -> {__animation} -> wheninterrupted (sub { + $self -> {__animation} = undef; + $self -> notify ('ANIMATION_ABORD', $self -> {__x}, $self -> {__y}); + }); + $self -> {__animation} -> start (); } sub isRunning { -- cgit v1.1