BetweenAS3는 일본의 Spark project팀에서 만든 Tween 클래스입니다.
속도면에서 가장 뛰어나다는 TweenMax를 능가하는 퍼포먼스를 보여주는데요,
아래의 링크를 통해 퍼포먼스를 확인 할 수 있습니다.
http://www.be-interactive.org/works/20090428/Particle/index.html



Wonderfl을 여행하던중 알게되어 이리저리 테스트해보았는데, 기본적인 사용법은 Wonderfl Tutorial과 BetweenAS3 EN에서 확인 하실 수 있고, 여기선 실제프로젝트에 쓰일만한 중요한 기능을 몇가지 나열할까 합니다.




1. 일정 시간이 지난 후 함수 실행
TweenMax의 delayedCall에 해당하는 내용인데, BetweenAS3는 func라는 함수를 지원하고 있어서 그부분을 이용하여 아래와 같은 방법으로 만들 수 있습니다. 
 

 
01.public function between_test()
02.{
03.    // 3초 후 에 tweenComplete 함수 실행
04.    BetweenAS3.delay(BetweenAS3.func(tweenComplete), 3).play();
05.}
06.  
07.private function tweenComplete():void
08.{
09.    trace("complete");
10.}
 

그리고 중요한 부분이 delay 함수가 실행되기전에 지우는 경우인데 (TweenMax의 killDelayedCallsTo에 해당) BetweenAS3는 자체적으로 kill이나 overwrite를 지원하지 않아서 아래와 같은 방법이 필요합니다. 
 
 
01.private var tween:ITween;
02.  
03.public function between_test()
04.{
05.    tween = BetweenAS3.delay(BetweenAS3.func(tweenComplete), 3);
06.    tween.play();
07.}
08.  
09.private function tweenComplete():void
10.{
11.    trace("complete");
12.}
13.  
14.// 3초가 안지났는데 killTween 실행시 tweenComplete 함수 실행 막음
15.private function killTween():void
16.{
17.    if (tween != null) {
18.        tween.stop();
19.        tween = null;
20.    }
21.}
 
 


2. 이벤트 잡아내기
tween 이벤트를 catch하는 방법은 2가지가 있습니다. 
 
 
01.public function between_test()
02.{
03.    var tween:ITween = BetweenAS3.tween(target, to, from, time, easing);    
04.    tween.addEventListener(BetweenEvent.COMPLETE, onComplete);
05.    tween.play();
06.}
07.  
08.private function onComplete(evt:BetweenEvent):void
09.{
10.    trace("complete");
11.}
  
 
01.public function between_test()
02.{
03.    var tween:ITween = BetweenAS3.tween(target, to, from, time, easing);
04.    tween.onComplete = tweenComplete;
05.    tween.onCompleteParams = [1, 2];
06.    tween.play();
07.}
08.  
09.private function tweenComplete(one:int, two:int):void
10.{
11.    trace("complete");
12.}
 
지원되는 이벤트는 아래와 같습니다.
onPlay
onPlayParams
onStop
onStopParams
onUpdate
onUpdateParams
onComplete
onCompleteParams

언제 어느것이 실행되는지 확인하실려면 이곳을 보시면 됩니다.




3. Tween Group(여러 Tween 동시실행, 순차실행)
여러개의 Tween을 Group으로 묶어서 한번에 실행 할 수 있습니다. 
 
 
1.public function between_test()
2.{
3.    var tween0:ITween = BetweenAS3.tween(target, to, from, time, easing);
4.    var tween1:ITween = BetweenAS3.tween(target, to, from, time, easing);
5.    BetweenAS3.parallel(tween0, tween1).play();
6.}
 

역시 마찬가지로 Tween Group을 순차적으로 실행 할 수 있습니다.
tween0이 완료되고 tween1이 실행됩니다. 
 
 
1.public function between_test()
2.{
3.    var tween0:ITween = BetweenAS3.tween(target, to, from, time, easing);
4.    var tween1:ITween = BetweenAS3.tween(target, to, from, time, easing);
5.    BetweenAS3.serial(tween0, tween1).play();
6.}
 



4. time 이 0 일때
TweenMax와 달리 Between은 time이 0이면 실행되지 않습니다.
volume을 조절하거나 tint를 조절할때 time을 0으로 줘야하는 경우가 있는데, 아래와 같이 수정을 하시면 time을 0으로 설정해서 사용가능합니다.

org.libspark.betweenas3.core.tweens.AbstractTween.as 파일의 363번째 줄
 
362.if (_isPlaying) {   
363.    if (t >= _duration) {  // 수정 전
364.        _position = _duration;
 
 
362.if (_isPlaying) {
363.    if (t > _duration) {  // 수정 후
364.        _position = _duration;
 
 
 
 
 
원문은 http://blog.cmiscm.com/761 입니다