チケット #63 (new discussion)

登録: 1 年 前

最終更新: 3 ヶ月 前

BetweenAS3 への要望とか!!

報告者: nobu 担当者: yossy
優先度: major マイルストーン:
コンポーネント: BetweenAS3 キーワード: BetweenAS3 Tweener TweenMax HydroTween gTween
関係者:

チケットの概要 (最終更新者: yossy)

Adobe MAX 2009 で発表された

「BeInteractive! がトゥイーンライブラリを作るとどうなるのか!?」

なライブラリ BetweenAS3 への要望をココに投げて、 より良いものになるよう協力していきましょう!!

BetweenAS3 についてはこちら参照:

ps. これってオープンソースの醍醐味ですよね!!

添付ファイル

チケットの履歴

2009/02/05 02:13:28 更新者:nobu

EventDispatcher? (IEventDispatcher でも可) を継承した形で作ってもらえると、 Tweener ライクな onComplete 上書き問題とかが発生しなくて良いと思いまーす。 さらには Thread の event とも相性が良くて、個人的には使いやすくて良いです。

2009/02/05 02:47:58 更新者:yossy

ITween インターフェイスさんは IEventDispatcher インターフェイスを継承する予定です :)

2009/02/05 13:16:43 更新者:nutsu

要望というかなんとなく書きます。ニッチと思われるのでアレですが。 ・easing曲線のGUI的編集 ・初期値の指定 ・ターゲット値の動的変更 ・フレームでの時間指定も可とか ・拡張がしやすい感じに(でもって拡張クラスをみんなで共有するとか)

とはいえ、MAXでのスライドの内容だけでも十分魅力的ですので期待してまーす

( フォローアップ: ↓ 8 ) 2009/02/05 16:11:53 更新者:yossy

ありがとうございます!

  • easing 曲線の GUI 的編集
    • これはライブラリというより拡張機能での対応ですかね
  • 初期値の指定
    • from の指定でしょうか?それなら対応予定です :)
  • ターゲット値の動的変更
    • これは考え中です。これってよくやります? (&どんな場面で?)
  • フレームでの時間指定も可
    • Tweener にもあるんで対応する予定です :)
  • 拡張しやすい感じに
    • これは密かにかなり狙ってるポイントです :D

2009/02/05 16:16:59 更新者:yossy

当然のように高速/省メモリも目指します。速度的には、最速と言われている Tweensy の上を行く予定です。

(親コメント: ↑ チケットの概要 ; フォローアップ: ↓ 11 ) 2009/02/05 16:34:29 更新者:uwi

ベジエカーブじゃなくて3次スプラインのが欲しいです。応用面ですね多分・・

( フォローアップ: ↓ 9 ) 2009/02/05 17:17:38 更新者:theodoorjp

既出だったらスイマセン><

楽しみにしてます!


1) イージングの途中から開始

addTween(_obj, {time:1, timeOffset:0.5, ・・・});

みたいな感じです。イージング中に途中で気が変わって別の表現で終わらせたいみたいな時などに使えそうです。

2) 計算のキャッシュ機能

同じ設定のイージングを実行する場合、初回起動がキャッシュされるのであとの計算がさくさく。 パーティクルなど大量に扱う場合に便利。

addTween(_obj, {time:1, cache:true, ・・・});

みたいな感じです。

3) easeIn,easeOut を別々に設定できる

addTween(_obj, {x:100, easeIn:Easing.CUBIC, easeOut:Easing.BOUNCE})

前後の配分の割り振りもできるとさらにうれしいです。。

4) 時速を出してくれる

ease.speed

時速 / px (秒速?)

早いと色が変わるとか blur の量を調節したりとか使いどころがありそうです。

(親コメント: ↑ 4 ; フォローアップ: ↓ 10 ) 2009/02/05 17:27:21 更新者:nutsu

どうもでーす

* 初期値の指定 * from の指定でしょうか?それなら対応予定です :)

そんな感じです。んかいつも最初の位置にもってくのが余計な感じがして。

hogeTween( addChild( new Hoge()), {startx:0, x:100, time:2 } ).join( {time:1, alpha:0} ).join( something remove ); 変な構文なってますけど、ライナーで生成から削除までみたいな…

* ターゲット値の動的変更 * これは考え中です。これってよくやります? (&どんな場面で?)

これは、いつも自前で書くのですが、マウスのトラックだとかです。どっちかいうと加速度モデルですが…

それではぁ

(親コメント: ↑ 7 ; フォローアップ: ↓ 14 ) 2009/02/05 17:28:39 更新者:yossy

おお、面白い要望が多いですね!ありがとうございます。

  • イージング途中からの開始
    • BetweenAS3 は、トゥイーンの一部分だけ切り出す、ということが可能です :D
  • 計算のキャッシュ機能
    • これってどこまでキャッシュされるイメージでしょうか?パラメータ部分?
  • easeIn, easeOut を別々に設定できる
    • おー、できるんだろうか。。できたら面白いですね。
  • 時速を出してくれる
    • なるほど!検討してみます。

(親コメント: ↑ 8 ) 2009/02/05 17:30:04 更新者:yossy

どもでーす!

そんな感じです。んかいつも最初の位置にもってくのが余計な感じがして。

ですよね。僕もいっつもめんどさーと思ってました。

これは、いつも自前で書くのですが、マウスのトラックだとかです。どっちかいうと加速度モデルですが…

なるほどなるほど。検討してみます!

(親コメント: ↑ 6 ) 2009/02/05 17:34:10 更新者:yossy

ありがとうございます!

ベジエカーブじゃなくて3次スプラインのが欲しいです。応用面ですね多分・・

三次スプラインがよくわかってないですが、やってみます!

2009/02/05 17:58:33 更新者:yossy

  • 説明 が更新されました。

2009/02/05 18:02:00 更新者:yossy

Twitter で出た要望も書いておく。

  • 距離と速度を指定すると時間を自動計算
  • 他のトゥイーンライブラリ用の拡張が使える Adapter

(親コメント: ↑ 9 ) 2009/02/05 18:12:04 更新者:anonymous

yossy への返信

おお、面白い要望が多いですね!ありがとうございます。 * イージング途中からの開始 * BetweenAS3 は、トゥイーンの一部分だけ切り出す、ということが可能です :D

さすがですね!すばらしい!

* 計算のキャッシュ機能 * これってどこまでキャッシュされるイメージでしょうか?パラメータ部分?

フレーム毎の目標値に対する移動比率の係数をイメージしたのですが、 冷静に考えたら時間で設定する限りフレームあたりの時間のゆらぎでうまくいかないですね><

そんなわけで同じフレームで開始した場合のみ有効なのですが、

複数の mc がそれぞれのパラメーターを”同じ時間”と”同じイージング”を設定し、”同じフレーム”で実行された場合は共有されるみたいな感じでしょうか。

よほどのことがないと体感できないかもしれませんが。。

( フォローアップ: ↓ 16 ) 2009/02/05 18:32:57 更新者:juni

fuse みたいに Between.serial などの途中で function 実行は可能でしょうか?
たとえばこんな感じ

Between.serial(
    Between.tween(mc1, {x: 100, y: 100}),
    Between.tween({scope: this, func: "hoge"}),
    Between.tween(mc2, {x: 200, y: 200})
).play();

(親コメント: ↑ 15 ) 2009/02/05 18:41:26 更新者:yossy

ありがとうございます!

fuse みたいに Between.serial などの途中で function 実行は可能でしょうか?

やはり途中で関数を実行したいという要望は多いんですかね。Between.func(f:Function):ITween 的なものを考えてみます。

( フォローアップ: ↓ 19 ) 2009/02/05 18:58:47 更新者:n_mattun

// 作成 (Tweener と同じような感じ)
var t:ITween = Between.tween(mc, {
    x: 100,
    y: 100,
    time: 1.0
});

時間軸のプロパティ、time以外にもフレームカウントベースのものがほしいっす。

var t:ITween = Between.tween(mc, {
    x: 100,
    y: 100,
   frameCount: 10//10フレームかけて指定位置までトゥイーン、とか。
});

( フォローアップ: ↓ 20 ) 2009/02/06 10:12:29 更新者:yoshihiko

Between、すごく楽しみです!


・特定値or特定時間を過ぎたときのイベント発生(onCuePointみたいなの)

 var cp:CuePoint = new CuePoint?({x:100}, over100pxHandler);  addCuePoint(cp);

 複数条件時にANDかORを選べると、「xが100超えるか、yが画面外に出たときに消す」みたいな設定ができてよいかも

・グループ化の際、delayIncrementsを配列で指定(それぞれ違ったタイミングでdelayがかかるようにしたい時など)

・ムービークリップのフレームのトゥイーン(もしかして、currentFrameでできましたっけ?)  アニメーションなどを作ってる場合に、MC自体ではなくフレームの再生速度をトゥイーンしたい。しかも特定ラベルのフレーム間だけ(勝手やな・・・)  フレームレートが変わるたびにアニメーションを編集しないといけないのがつらいので・・・

・プレビュー用and生成用拡張パネルw

期待してます!!

(親コメント: ↑ 17 ) 2009/02/06 13:17:41 更新者:yossy

どもでーす。

時間軸のプロパティ、time以外にもフレームカウントベースのものがほしいっす。

既に要望出てますね。これは対応しまーす。

(親コメント: ↑ 18 ) 2009/02/06 13:22:19 更新者:yossy

ありがとうございます!

・特定値or特定時間を過ぎたときのイベント発生(onCuePointみたいなの)

なるほどー。特定時間はたしか gTween にありましたね。これはさくっと出来そう。特定値も面白いので考えますー。

・グループ化の際、delayIncrementsを配列で指定(それぞれ違ったタイミングでdelayがかかるようにしたい時など)

Between.parallel にわたす Between.tween でそれぞれ delay を指定すれば OK です!

・ムービークリップのフレームのトゥイーン(もしかして、currentFrameでできましたっけ?)

フレームのトゥイーンはできるようにします :D

・プレビュー用and生成用拡張パネルw

・・・がんばりますw

2009/02/07 09:03:34 更新者:yossy

Twitter で出た要望追加

  • Shader 仕様による高速化
  • プリセット的な機構

( フォローアップ: ↓ 23 ) 2009/02/10 06:38:55 更新者:naggg

遅くなりましたが意見いいますー。 そうですね、個人的にはTweenMax?使いなので、インスタンス生成のシンタックスはそっちの方が嬉しいです。  Tweener: addTween(target, {time: *}) でなくて、  TweenMax?: to(target, time, option) のように、必ず第二引数で時間を指定するってヤツ。 Tweenerだと毎回 time を書かなくちゃいけなくて萎えますw

それと、time = 0 を指定したら時間差なしで(非同期ではなくて)その場で実行してくれると嬉しいかなぁ。 要は、TweenMax?よりも使いやすくてそして速く動作したら最高だよ、ってお話です。よろしくです!!

(親コメント: ↑ 22 ) 2009/02/11 15:36:12 更新者:yossy

ありがとうございます!

Tweenerだと毎回 time を書かなくちゃいけなくて萎えますw

なるほどー。ただ今回は、フレームベースの時間指定なども取り入れる予定なので、time 書く方式になっちゃう確立が高いですすいません。

それと、time = 0 を指定したら時間差なしで(非同期ではなくて)その場で実行してくれると嬉しいかなぁ。

これは僕も Between.set(target, args); でトゥイーン無しでパラメータ設定的なのを考えてたので入ると思います :)

要は、TweenMax?よりも使いやすくてそして速く動作したら最高だよ、ってお話です。よろしくです!!

><!よかったら TweenMax? の使いにくいところももっと教えてもらえると嬉しいです〜

( フォローアップ: ↓ 26 ) 2009/02/16 19:47:13 更新者:seyself

遅い要望ですいません。

■相対値の指定

var t:ITween = Between.tween(mc, {x:10, y:-10});
t.relativity = true;

現在の値から +10 とか -10 とか出来るようになると便利で有難いです。

■デフォルトのパラメータ指定

Between.defaultOptions = {
    time : 0.65,
    ease : Cubic.easeOut,
    timeScale : 1,
    onComplete : completeHandler
}

指定しておくと以降のtween作成時にこれらの値が適用されるような仕組みがあると嬉しいです。
デバッグ時は timeScale を 0.1 とかにすれば全アニメーションが早回しになったりとか。
上の「相対値の指定」なんかもデフォルトで「相対」とか指定できると便利かと思います。

■delay の相対時間指定

Between.parallel(
    Between.tween(mc1, {x:100, y:100, delay:0.2}),
    Between.tween(mc2, {x:200, y:200, delay:0.4})
).play();

初回は 0.2 秒後に実行。
2つ目以降は前回の実行から 0.4 秒後(呼び出しから 0.6 秒後)に実行。

var t:Number = 0;
Between.parallel(
    Between.tween(mc1, {x:100, y:100, delay:(t+=0.2)}),
    Between.tween(mc2, {x:200, y:200, delay:(t+=0.4)})
).play();

これでも同等にはなると思いますが、普段から割りと冗長的な書き方だなあと感じてるので、
どっかの設定できるようになると嬉しいです。

■上書きされたときの通知

var t1, t2;
(t1 = Between.tween(mc, {x:100, y:100})).play();
(t2 = Between.tween(mc, {x:50, alpha:0})).play();

上記の t1 が実行中に、別の場所やイベントによって t2 が実行された際、
mc の x の指定値が書き換えられたことを受け取れる仕組みがあると有難いです。

長々と書いてしまってすいません。
もしあってもいいかなって思う機能があれば実装していただけると幸いです。

( フォローアップ: ↓ 27 ) 2009/02/18 17:09:24 更新者:famipla

一点、ニッチな要望ですが「点滅」処理を入れることはできないでしょうか?
厳密にはTweenではないのかもしれませんが、移動の後に点滅等のアクセントを組み合わせたいことが多いので、
Tweenの処理と同列で扱えたら良いのにとずっと思っていました。
パラメータ的には点滅の間隔と回数、最後に表示で終わるか非表示で終わるかの設定する感じです。

Between.serial(
    Between.tween(mc1, {time:1, x:100, y:100}),
    Between.blink(mc1, {time:0.2, times:3, display:off})
).play();

とするとmc1が1秒で移動後、0.2秒間隔で3回点滅し、消えた状態で終わるというイメージです。
(off->on で1セットとすると、off-on, off-on, off-on,off )

ご検討いただけたら幸いです。

(親コメント: ↑ 24 ) 2009/02/20 17:47:21 更新者:yossy

ありがとうございます!返事遅くなってすみません!

■相対値の指定

相対値の指定はサポートする予定です。現時点では、プロパティ名の先頭に $ をつけると相対値指定になります。

■デフォルトのパラメータ指定

検討してみます!もしかしたら、プリセットでも対応できるかもしれないですね。

■delay の相対時間指定

なるほどー。どうやって指定させるかがちょっと難しいところですね。考えてみます。

■上書きされたときの通知

検討してみます!

(親コメント: ↑ 25 ) 2009/02/20 17:48:10 更新者:yossy

ありがとうございます!

点滅は、visible プロパティのトゥイーンやプリセット辺りで対応しようかなと思います。

2009/02/25 01:47:06 更新者:octech

BetweenAS3、期待しています!

サンプルを見ていたら、ドットシンタックスで連結して表現できたらいいのになー、と思います。 ソースの見た目が分かりやすくなり、ちょっとした修正とか楽になるような気がします。
(あまりほかのTweenライブラリも使い込んでいないので、的外れな指摘だったら失礼)

例:

BetweenAS3.reverse(BetweenAS3.slice(BetweenAS3.tween(mc1, {x: 100, y: 100}), 0.9, 1.0)).play();

と同様の処理を、以下のような記述で。

BetweenAS3.tween(mc1, {x: 100, y: 100}).slice(0.9, 1.0).reverse().play();


ITweenを拡張すれば出来そうですが、処理速度の問題が発生しますかね?

2009/03/04 23:19:24 更新者:yossy

レス遅くなってすみません!ありがとうございます!

たしかに、ドットシンタックスで連結というのも、今風で良いですね。ただ、ITween のインターフェイスが肥大化してしまうのがちょっと悩みどころです。検討してみます。 (処理速度的にはさほど問題ないと思います)

( フォローアップ: ↓ 32 ) 2009/09/20 15:46:27 更新者:polikeiji

yossyさん Threadライブラリをはじめ、楽しいライブラリと、良くまとまったドキュメントありがとうございます。

BetweenAS3ですが、 Threadライブラリとの関係は、どんな感じになるのかなと思い コメントさせてもらいました。

TweenerThread?みたいな感じで、Thread + BetweenAS3 で併用する感じでしょうか ? 何となく、BetweenAS3の Action Integration の機能が、 Threadライブラリの取り扱う範囲と若干、オーバーラップしそうな気がしたりもするんですが。。。

まだ、ActionScript?初めて間もない、ビギナーですが、、、 気になったんで、コメントさせてもらいました。。。

( フォローアップ: ↓ 33 ) 2009/09/25 16:37:27 更新者:kamipoo

こんにちは。 BetweenAS3を使っていて気になったところがあったので要望として書かせていただきます。

SerialTween?ParallelTween?の子孫に設定したPLAYイベントが発行されないのですが、 それを発行することは出来ますか? 以下のように使う事を考えてます。

var t1:IObjectTween = BetweenAS3.tween(this, {x:to1}, {x:from1}, 1);
var t2:IObjectTween = BetweenAS3.tween(this, {x:to2}, {x:from2}, 1);
t2.onPlay=function(){trace("ここでハンドリングしたい");}
var tween:ITweenGroup = BetweenAS3.parallel(t1, t2);
tween.play();

(親コメント: ↑ 30 ) 2009/09/28 22:17:50 更新者:yossy

polikeiji さん

返事遅くなってすみません。こちらこそありがとうございます! BetweenAS3Thread は、正式リリース時に用意する予定です。 Action Integration の機能が確かに似たような感じですが、こちらでは非同期処理の制御や、 エラーハンドリング、割り込みといった細かい機能はないので、Thread がいらなくなるような ことはありません。

(親コメント: ↑ 31 ; フォローアップ: ↓ 34 ) 2009/09/28 22:22:27 更新者:yossy

kamipoo さん

返事遅くなってすみません。たしかに今は出来ないですね。 この機能を実装するにあたっては、どのタイミングで子孫にイベントを発行するかを考えなければなりませんね。特に serial の場合に、

  1. tween の play を呼ぶとすぐに t1 と t2 両方に PLAY イベントが来る
  2. tween の play を呼ぶとまず t1 に PLAY イベントが来て t1 の部分が終わると t2 に PLAY イベントが来る

のどちらがよいかなーという感じです。STOP や COMPLETE も同様ですね。

何かご意見あれば聞かせて頂けると嬉しいです。

(親コメント: ↑ 33 ) 2009/09/30 01:41:20 更新者:kamipoo

yossy さん

返信ありがとうございます! PLAYイベントに関してはyossyさんが書かれている「2」のイメージです。 フローで言うと

  1. tween.play()
  2. tween のPLAY
  3. t1 のPLAY
  4. t1 のCOMPLETE
  5. t2 のPLAY
  6. t2 のCOMPLETE
  7. tween のCOMPLETE

のような感じでしょうか。

STOP に関して tween.stop() を実行したときに進行中のものに発行とかはどうでしょうか?

2009/10/14 21:06:17 更新者:clockmaker

こんにちは、ClockMaker?のYasuです。初投稿ドキドキしてます。

先日、口頭にて少しお話させて頂きましたが、遅延トゥイーン実行時における第3引数の値の挙動について要望があります。

同一のインスタンスに対して、第3引数をnullにしたBetweenAS3.delayを複数個作成すると、2番目以降のトゥイーン発生時における初期値にバグが発生しています。

wonderfl上にてテストしたものをアップしていますので、詳しくは下記のURLをご参照の上ご確認いただけませんでしょうか?

http://wonderfl.net/code/77999975787c6c17c307ca609b3242f6673061c1

2009/12/17 18:44:26 更新者:鳩の糞にご注意ください。

Core AnimatonのCAKeyframeAnimationで、CGPathRefを配列で指定するような Keyframeアニメションの機能があれば、最高に良いと思いますが、 追加予定はありますか?

無ければ、作ってみようかと。


追記/更新 #63 (BetweenAS3 への要望とか!!)