5分でわかる enchant.js アニメーション機能

44
5分でわかる enchant.js アニメーション機能 @sidestepism 2013/05/29 v0.7 対応版更新

description

enchant.js でのプログラミングを劇的に簡単にする! 「enchant.js」のタイムラインベースのアニメーションについての解説です 2012/4/21: enchant.js meetup のLTで発表されました 2013/5/29: v0.6 以降の更新にあわせてアップデートしました。

Transcript of 5分でわかる enchant.js アニメーション機能

Page 1: 5分でわかる enchant.js アニメーション機能

5分でわかるenchant.js アニメーション機能

@sidestepism

2013/05/29 v0.7 対応版更新

Page 2: 5分でわかる enchant.js アニメーション機能

自己紹介

伏見 遼平

(株)ユビキタスエンターテイメント秋葉原リサーチセンター (UEI/ARC)9leap プロジェクトリーダー

Page 3: 5分でわかる enchant.js アニメーション機能

たとえば「クマを移動させたい」

としたら…

Page 4: 5分でわかる enchant.js アニメーション機能

bear.addEventListener(“enterframe”, function(){ bear.x ++;});

// -> 1フレームに1ピクセル移動する

Page 5: 5分でわかる enchant.js アニメーション機能

動いた!

Page 6: 5分でわかる enchant.js アニメーション機能

止まらない…

Page 7: 5分でわかる enchant.js アニメーション機能

bear.addEventListener(“enterframe”, function(){ if(bear.x < 100)bear.x ++;});

// -> 100ピクセルだけ移動させる

Page 8: 5分でわかる enchant.js アニメーション機能

今度は

Page 9: 5分でわかる enchant.js アニメーション機能

止まった!

Page 10: 5分でわかる enchant.js アニメーション機能

それでは…

Page 11: 5分でわかる enchant.js アニメーション機能

それでは…

Page 12: 5分でわかる enchant.js アニメーション機能

それでは…

Page 13: 5分でわかる enchant.js アニメーション機能

こんな動きは?

Page 14: 5分でわかる enchant.js アニメーション機能

animation.enchant.jsを使おう

Page 15: 5分でわかる enchant.js アニメーション機能

animation.enchant.jsを使おう

Page 16: 5分でわかる enchant.js アニメーション機能

animation.enchant.js

tl.enchant.js

enchant.js本体にmergeされました (v0.6 以降)

Page 17: 5分でわかる enchant.js アニメーション機能

Node を継承したクラスのインスタンスでアニメーション機能が使えます

(Sprite, Label, Group, Scene など)

tl : TimeLine の略称あとで説明します

Page 18: 5分でわかる enchant.js アニメーション機能

// (120, 120) に動かす

bear.moveTo(120, 120, 30);

Page 19: 5分でわかる enchant.js アニメーション機能

// (120, 120) に1秒(30フレーム) で動かす

bear.tl.moveTo(120, 120, 30);

Page 20: 5分でわかる enchant.js アニメーション機能

// (120, 120) に30フレームで動かしたあと// (60, 180) に30フレームで動かす

bear.tl.moveTo(120, 120, 30).moveTo(60, 180, 30);

Page 21: 5分でわかる enchant.js アニメーション機能

// (120, 120) に30フレームで動かしたあと// (60, 180) に30フレームで動かしてから// (180, 90) に30フレームで動かす

bear.tl.moveTo(120, 120, 30) .moveTo(60, 180, 30) .moveTo(180, 90, 30);

Page 22: 5分でわかる enchant.js アニメーション機能

moveTo(120, 120, 30)

moveTo(180, 90, 30)

moveTo(160, 30, 30)

キューが溜まっていく

イメージ

処理順

Page 23: 5分でわかる enchant.js アニメーション機能

bear.tl.moveTo(120, 120, 30);bear.tl.moveBy(40, 40, 30);

// -> 絶対位置で (120, 120) へ移動// -> 相対位置で (+40, +40) へ移動

機能紹介その0

移動させるmoveTo/moveBy

Page 24: 5分でわかる enchant.js アニメーション機能

bear.tl.fadeIn(30);

// -> 30フレームでフェードインする

機能紹介その1

フェードインfadeIn

Page 25: 5分でわかる enchant.js アニメーション機能

bear.tl.delay(30).scaleTo(3, 30);

// -> クマを30フレーム後に画面から消す

機能紹介その2

大きさを変更するscaleTo/scaleBy

Page 26: 5分でわかる enchant.js アニメーション機能

bear.tl.delay(30).fadeIn(30);

// -> 30フレーム後、30フレームでフェードインする

機能紹介その3

指定した時間だけ待つdelay

Page 27: 5分でわかる enchant.js アニメーション機能

bear.tl.delay(30).then(function(){ scene.removeChild(bear);});

// -> クマを30フレーム後に画面から消す

機能紹介その4

関数を実行するthen

Page 28: 5分でわかる enchant.js アニメーション機能

bear.tl.cue({ 10: function(){ ... }, 20: function(){ ... }, 30: function(){ ... }, 50: function(){ ... }});

機能紹介その5

たくさん関数を実行するcue

Page 29: 5分でわかる enchant.js アニメーション機能

bear.tl.tween({ x: 120, y: 120, scaleX: 3, scaleY: 3, time: 100 }));

機能紹介その6

トゥイーンを追加するtween

Page 30: 5分でわかる enchant.js アニメーション機能

bear.tl.fadeIn(30).moveTo(120, 120, 30)// -> フェードインしてから移動

bear.tl.fadeIn(30).and().moveTo(120, 120, 30)// -> 同時に実行!

機能紹介その7

並列実行and

Page 31: 5分でわかる enchant.js アニメーション機能

bear.tl.fadeIn(30).fadeIn(30).loop();// -> フェードイン・アウトを繰り返す

機能紹介その8

ループloop

Page 32: 5分でわかる enchant.js アニメーション機能

bear.tl.skip(100);

// -> 100フレーム分早送り

機能紹介その9

指定したフレームだけ早送りskip

Page 33: 5分でわかる enchant.js アニメーション機能

機能紹介その10

関数を繰り返し実行repeat

機能紹介その11

キューを一時停止/再開pause / resume

機能紹介その12

キューをすべて消去clear

Page 34: 5分でわかる enchant.js アニメーション機能

機能紹介その13

処理を待ってから次へwaitUntil

機能紹介その14

自分でアクションを定義action

機能紹介その15

シーンから削除removeFromScene

Page 35: 5分でわかる enchant.js アニメーション機能

忘れちゃいけない

イージング

Page 36: 5分でわかる enchant.js アニメーション機能

「ふわっ」とした動き

Page 37: 5分でわかる enchant.js アニメーション機能

これがイージング!!

Page 38: 5分でわかる enchant.js アニメーション機能

// イージング (ふわっと動かす)

bear.tl.moveTo(120, 120, 30, enchant.Easing.QUAD_EASEINOUT);

bear.tl.tween({ x: 120, y: 120, scaleX: 3, scaleY: 3, time: 100, easing: enchant.Easing.QUAD_EASEINOUT }));

関数を指定

Page 40: 5分でわかる enchant.js アニメーション機能

enchant.Easing.

QUAD_QUBIC_QUINT_SIN_BACK_CIRC_ELASTIC_BOUNCE_EXPO_

+EASEINEASEOUTEASEINOUT

プリセットのイージング関数いろんな「ふわっと具合」から選べます

Page 41: 5分でわかる enchant.js アニメーション機能

「Tweener Transition Sample」などで検索

Page 42: 5分でわかる enchant.js アニメーション機能

アニメーションを表現したりタイマーを作ったり

…いろんなことに使えます

Page 43: 5分でわかる enchant.js アニメーション機能

Already Available on github

Page 44: 5分でわかる enchant.js アニメーション機能

enchant.js よろしくね!

おわり