Upload
yomotsu
View
775
Download
4
Embed Size (px)
DESCRIPTION
Citation preview
TweenJS for Everything
2013/03/15 yomotsu@PixelGrid, Inc.
Friday, March 15, 13
小山田 晃浩
FrontEnd Engineer at PixelGrid
Twitter@yomotsu
Who?
Friday, March 15, 13
TweenJS?
Friday, March 15, 13
Friday, March 15, 13
Friday, March 15, 13
•アニメーションanimation
•トゥイーンtween
•イージングeasing
Friday, March 15, 13
TweenJS with EaselJS
demo
Friday, March 15, 13
Usage
1. Tween インスタンスを取得get a Tween instance
2. トゥイーン、ディレイ、コールバックを追加then, add tween, delay or callback as needed
Friday, March 15, 13
1. get a Tween instancecreatejs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
this behaves as "new createjs.Tween()"
Friday, March 15, 13
1. get a Tween instancecreatejs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
EaselJS DisplayObject
Friday, March 15, 13
2. chain, chain, and chain!createjs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
adding tween
Friday, March 15, 13
2. chain, chain, and chain!createjs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
target value for this tween
Friday, March 15, 13
2. chain, chain, and chain!createjs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
duration
Friday, March 15, 13
2. chain, chain, and chain!createjs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
easing
Friday, March 15, 13
2. chain, chain, and chain!createjs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
2000ms delay
Friday, March 15, 13
2. chain, chain, and chain!createjs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
multiple values
Friday, March 15, 13
2. chain, chain, and chain!createjs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
callback
Friday, March 15, 13
conclusioncreatejs.Tween.get( nyan ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
Friday, March 15, 13
conclusioncreatejs.Tween.get( nyan, { loop : true } ).to( { x: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 300 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).to( { x: 100, y: 100 }, 1000, createjs.Ease.quadOut ).wait( 2000 ).call( function() { console.log( 'done!' );} );
Friday, March 15, 13
How dose it work?
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
How dose it work?
1. Tween のインスタンスを作ると...When you created an instance of Tween...
2. TweenJS が登録されたオブジェクトの値を変更TweenJS will change value of applied object
3. EaselJS がオブジェクトを表示then, EaselJS will render the object using changed value
Friday, March 15, 13
TweenJS はオブジェクトの値を変更しているだけTweenJS is just changing value of the object
Friday, March 15, 13
TweenJS can be usedwith other libs
Friday, March 15, 13
TweenJS with Paper.js
demo
Friday, March 15, 13
TweenJS with three.js
demo
Friday, March 15, 13
TweenJS with SVG DOM
demo
Friday, March 15, 13
TweenJS can get alongwith others!
Friday, March 15, 13
learn APIs
http://www.createjs.com/Docs/TweenJS/modules/TweenJS.html
Friday, March 15, 13
conclusion
Friday, March 15, 13
conclusion
• TweenJS はオブジェクトの値を変えているだけTweenJS is just changing value of an object
• いろいろな表示系ライブラリーと組み合わせ可能TweenJS can be used in combination with several libs
• ただし、TweenJS は EaselJS に依存しているTweenJS is dependent on EaselJS TweenJSの機能だけを利用したくても EaselJS を読みこまなくてはいけない
Friday, March 15, 13
in addition...
Friday, March 15, 13
tween.js
https://github.com/sole/tween.js/
Friday, March 15, 13
tween.jsvar obj = { x : 100, y : 100}
var t1 = new TWEEN.Tween( obj ).to( { x: 300 }, 1000 ).easing( TWEEN.Easing.Quadratic.Out );
var t2 = new TWEEN.Tween( obj ).to( { x: 100, y : 300 }, 1000 ).easing( TWEEN.Easing.Quadratic.Out ).delay( 2000 );
var t3 = new TWEEN.Tween( obj ).to( { x: 100, y : 100 }, 1000 ).easing( TWEEN.Easing.Quadratic.Out ).delay( 2000 ).onComplete( function () { console.log( 'done!' );} );
t1.chain( t2 );t2.chain( t3 );
t1.start();
Friday, March 15, 13
tween.js
demo
Friday, March 15, 13
jQuery can also do that similarvar obj = { x : 100, y : 100};
$.when( $( obj ).animate( { x : 300 }, 1000 ) ).then( $( obj ).delay( 2000 ) ).then( $( obj ).animate( { x : 100, y : 300 }, 1000 ) ).then( $( obj ).delay( 2000 ) ).then( $( obj ).animate( { x : 100, y : 100 }, 1000 ) ).then( $( obj ).delay( 2000 ) ).then( function () { console.log( 'done' );} );
Friday, March 15, 13
jQuery can also do that similar
demo
Friday, March 15, 13
conclusion
Friday, March 15, 13
難度easily
機能features
依存depending on
TweenJS
tween.js
jQuery
簡単! 充実! EaselJSに依存
すこし複雑 充実!(特にevent) なし!
簡単! それなり 必要に応じて jQuery Easing Plugin
Friday, March 15, 13
Friday, March 15, 13
購読開始から30日間無料
(月額840円)
Friday, March 15, 13
Question?
@yomotsu
Friday, March 15, 13