[BetweenAS3]SleepTween DEMO
SleepTween demo.
-------------------------------------------------
一定時間停止する SleepTween を作って、花火が打ちあがったあとの
1秒間の停止を実現している。
BetweenAS3.delay() を使ってもいいのだけど、BetweenAS3.serial() で
列挙するときには、SleepTween を使った方が直感的に定義できる気がする。
将来的には、BetweenAS3.sleep() が実装されれば嬉しいかも(?)。
♥0 |
Line 55 |
Modified 2010-01-04 00:34:34 |
MIT License
archived:2017-03-20 12:29:05
ActionScript3 source code
/**
* Copyright nitoyon ( http://wonderfl.net/user/nitoyon )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/6Jf8
*/
// SleepTween demo.
//-------------------------------------------------
// 一定時間停止する SleepTween を作って、花火が打ちあがったあとの
// 1秒間の停止を実現している。
// BetweenAS3.delay() を使ってもいいのだけど、BetweenAS3.serial() で
// 列挙するときには、SleepTween を使った方が直感的に定義できる気がする。
// 将来的には、BetweenAS3.sleep() が実装されれば嬉しいかも(?)。
package {
import flash.display.*;
import org.libspark.betweenas3.BetweenAS3;
import org.libspark.betweenas3.tweens.ITween;
[SWF(width="475", height="475", backgroundColor="#000000")]
public class Test extends Sprite {
private const NUM:int = 12;
private const SIZE:int = 475;
public function Test() {
stage.scaleMode = "noScale";
stage.align = "TL";
var tweens1:Array = []; // 打ちあがる Tween
var tweens2:Array = []; // 広がる Tween
// 花火の火種を作る
for (var i:int = 0; i < NUM; i++) {
var d:Dot = new Dot();
d.x = SIZE / 2;
d.y = SIZE;
addChild(d).rotation = i / NUM * 360;
tweens1.push(BetweenAS3.tween(d, {y: SIZE / 2}, null, 1.0));
tweens2.push(BetweenAS3.tween(d, {scaleX: 20, scaleY: 20, $rotation: 90}, null, 3.0));
}
// serial で Tween を作る。
// ここで SleepTween を使うのがキモ
var tween:ITween = BetweenAS3.serial(
BetweenAS3.parallelTweens(tweens1),
new SleepTween(1.0),
BetweenAS3.parallelTweens(tweens2)
);
// リピートで Tween の再生を開始する
tween.stopOnComplete = false;
tween.play();
}
}
}
import org.libspark.betweenas3.BetweenAS3;
import org.libspark.betweenas3.core.ticker.ITicker;
import org.libspark.betweenas3.core.tweens.AbstractTween;
import org.libspark.betweenas3.core.tweens.IITween;
// SleepTween の実装。
// 実は AbstactTween を継承するだけ。
// BetweenAS3.tween() で ObjectTween を作成してもいいのだが、
// ダミーのオブジェクトを用意するのがめんどくさい。
class SleepTween extends AbstractTween
{
/**
* static ITicker cache.
*/
private static var _ticker:ITicker;
/**
* Constructor.
*
* @param duration sleep duration.
* @param ticker ticker object.
* @param position initial position.
*/
public function SleepTween(duration:Number = 0, ticker:ITicker = null, position:Number = 0) {
if (!_ticker) {
// create tmp tween to get the BetweenAS3's static ticker.
var tmpTween:IITween = BetweenAS3.parallel() as IITween;
_ticker = tmpTween.ticker;
}
super(ticker || _ticker, position);
_duration = duration;
}
}
import flash.display.Sprite;
class Dot extends Sprite {
public function Dot() {
graphics.beginFill(0xffff80);
graphics.drawCircle(20, 0, 2);
graphics.endFill();
}
}