Proxy型Tweenライブラリ ProxyTween
対象オブジェクトのプロパティを直接変更する感覚でトゥイーンが実現できる
Proxy型Tweenライブラリ ProxyTween ver.0.1を公開しました。
大量のオブジェクトを動かしたり、複雑なトゥイーンには向きませんが、
ボタンのロールオーバー時のちょっとした演出などを簡単に実現できます。
今のところ、Tween関数としては、
・Tweener準拠の一般的なRobert Penner系
・org.as3s.Tween準拠の物理的なイージング
・ユーザー定義のカスタム関数
をサポートしています。
ダウンロード
Proxy型Tweenライブラリ ProxyTween ver.0.1
一番簡単な使い方
mct = new ProxyTween(mc);
mct.x = 200;
動かしたい対象のプロパティを設定する代わりに、Proxyのプロパティを設定するだけです。
Sample Code 1 (Click)
クリックイベントでProxyのx,yにマウス座標を設定しています。
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import org.as3s.ProxyTween;
[SWF(width='700',height='300',backgroundColor='0xeeeeee',frameRate='60')]
public class ProxyTweenSample1 extends Sprite
{
private var sp:Sprite;
private var spt:ProxyTween;
public function ProxyTweenSample1()
{
//Target Object
sp = new Sprite();
sp.graphics.beginFill(0x333333);
sp.graphics.drawRect(-50,-50,100,100);
sp.graphics.endFill();
sp.x = 350;
sp.y = 150;
addChild(sp);
spt = new ProxyTween(sp, ProxyTween.ELASTIC);
//spt = new ProxyTween(sp, ProxyTween.EASE_IN_OUT_QUAD, 60);
spt.addEventListener(ProxyTween.COMPLETE, onTweenComplete);
stage.addEventListener(MouseEvent.CLICK, onClick);
}
private function onClick(event:MouseEvent):void {
spt.x = event.stageX;
spt.y = event.stageY;
}
private function onTweenComplete(event:Event):void {
trace("Complete!");
}
}
}
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import org.as3s.ProxyTween;
[SWF(width='700',height='300',backgroundColor='0xeeeeee',frameRate='60')]
public class ProxyTweenSample1 extends Sprite
{
private var sp:Sprite;
private var spt:ProxyTween;
public function ProxyTweenSample1()
{
//Target Object
sp = new Sprite();
sp.graphics.beginFill(0x333333);
sp.graphics.drawRect(-50,-50,100,100);
sp.graphics.endFill();
sp.x = 350;
sp.y = 150;
addChild(sp);
spt = new ProxyTween(sp, ProxyTween.ELASTIC);
//spt = new ProxyTween(sp, ProxyTween.EASE_IN_OUT_QUAD, 60);
spt.addEventListener(ProxyTween.COMPLETE, onTweenComplete);
stage.addEventListener(MouseEvent.CLICK, onClick);
}
private function onClick(event:MouseEvent):void {
spt.x = event.stageX;
spt.y = event.stageY;
}
private function onTweenComplete(event:Event):void {
trace("Complete!");
}
}
}
Sample Code 2 (RollOver/RollOut)
ロールオーバー/アウトイベントでProxyのalphaを変更しています。
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import org.as3s.ProxyTween;
[SWF(width='700',height='300',backgroundColor='0xeeeeee',frameRate='60')]
public class ProxyTweenSample2 extends Sprite
{
private var sp:Sprite;
private var spt:ProxyTween;
private var elastic:ProxyTween;
public function ProxyTweenSample2()
{
//Target Object
sp = new Sprite();
sp.graphics.beginFill(0x333333);
sp.graphics.drawRect(-50,-50,100,100);
sp.graphics.endFill();
sp.x = 350;
sp.y = 150;
sp.alpha = 0.2;
addChild(sp);
spt = new ProxyTween(sp);
sp.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
sp.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}
private function onMouseOver(event:MouseEvent):void {
spt.alpha = 1;
}
private function onMouseOut(event:MouseEvent):void {
spt.alpha = 0.2;
}
}
}
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import org.as3s.ProxyTween;
[SWF(width='700',height='300',backgroundColor='0xeeeeee',frameRate='60')]
public class ProxyTweenSample2 extends Sprite
{
private var sp:Sprite;
private var spt:ProxyTween;
private var elastic:ProxyTween;
public function ProxyTweenSample2()
{
//Target Object
sp = new Sprite();
sp.graphics.beginFill(0x333333);
sp.graphics.drawRect(-50,-50,100,100);
sp.graphics.endFill();
sp.x = 350;
sp.y = 150;
sp.alpha = 0.2;
addChild(sp);
spt = new ProxyTween(sp);
sp.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
sp.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}
private function onMouseOver(event:MouseEvent):void {
spt.alpha = 1;
}
private function onMouseOut(event:MouseEvent):void {
spt.alpha = 0.2;
}
}
}