Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TweenJS for Everything
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yomotsu
March 15, 2013
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TweenJS for Everything
yomotsu
March 15, 2013
More Decks by yomotsu
See All by yomotsu
three.jsとRapierでレースゲームが3日でできた話
yomotsu
0
870
PBR in three.js
yomotsu
1
1.2k
dialog要素でつくるモーダルダイアログ
yomotsu
0
1.1k
IE to Edge
yomotsu
1
400
A Camera Control Library for three.js
yomotsu
1
1.5k
Let’s try AR on mobile Web with <model-viewer>
yomotsu
0
590
WebXR: Beyond WebGL
yomotsu
2
1.9k
Non-DOM components with WebGL in Vue.js
yomotsu
5
13k
WebGL Libs for WebApp Frameworks
yomotsu
4
7.9k
Other Decks in Programming
See All in Programming
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
750
スマートグラスで並列バイブコーディング
hyshu
0
120
New "Type" system on PicoRuby
pocke
1
790
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
270
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
RTSPクライアントを自作してみた話
simotin13
0
520
OSもどきOS
arkw
0
480
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
100
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
660
AI時代のUIはどこへ行く?その2!
yusukebe
20
7k
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
110
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Deep Space Network (abreviated)
tonyrice
0
170
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
170
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
440
The Spectacular Lies of Maps
axbom
PRO
1
800
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
Code Reviewing Like a Champion
maltzj
528
40k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Transcript
5XFFO+4GPS&WFSZUIJOH 2013/03/15 yomotsu@PixelGrid, Inc.
খࢁాߊߒ 'SPOU&OE&OHJOFFSBU1JYFM(SJE 5XJUUFS!ZPNPUTV 8IP
5XFFO+4
None
None
w Ξχϝʔγϣϯ BOJNBUJPO w τΡΠʔϯ UXFFO w Πʔδϯά FBTJOH
5XFFO+4XJUI&BTFM+4 EFNP
6TBHF 5XFFOΠϯελϯεΛऔಘ HFUB5XFFOJOTUBODF τΡΠʔϯɺσΟϨΠɺίʔϧόοΫΛՃ UIFO BEEUXFFO EFMBZPSDBMMCBDLBTOFFEFE
HFUB5XFFOJOTUBODF 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!' ); } ); this behaves as "new createjs.Tween()"
HFUB5XFFOJOTUBODF 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!' ); } ); EaselJS DisplayObject
DIBJO DIBJO BOEDIBJO 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
DIBJO DIBJO BOEDIBJO 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
DIBJO DIBJO BOEDIBJO 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
DIBJO DIBJO BOEDIBJO 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
DIBJO DIBJO BOEDIBJO 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
DIBJO DIBJO BOEDIBJO 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
DIBJO DIBJO BOEDIBJO 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
DPODMVTJPO 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!' ); } );
DPODMVTJPO createjs.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!' ); } );
)PXEPTFJUXPSL
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
)PXEPTFJUXPSL 5XFFOͷΠϯελϯεΛ࡞Δͱ 8IFOZPVDSFBUFEBOJOTUBODFPG5XFFO 5XFFO+4͕ొ͞ΕͨΦϒδΣΫτͷΛมߋ 5XFFO+4XJMMDIBOHFWBMVFPGBQQMJFEPCKFDU &BTFM+4͕ΦϒδΣΫτΛදࣔ UIFO
&BTFM+4XJMMSFOEFSUIFPCKFDUVTJOHDIBOHFEWBMVF
5XFFO+4 ΦϒδΣΫτͷΛมߋ͍ͯ͠Δ͚ͩ 5XFFO+4JTKVTUDIBOHJOHWBMVFPGUIFPCKFDU
5XFFO+4DBOCFVTFE XJUIPUIFSMJCT
5XFFO+4XJUI1BQFSKT EFNP
5XFFO+4XJUIUISFFKT EFNP
5XFFO+4XJUI47(%0. EFNP
5XFFO+4DBOHFUBMPOH XJUIPUIFST
MFBSO"1*T IUUQXXXDSFBUFKTDPN%PDT 5XFFO+4NPEVMFT5XFFO+4IUNM
DPODMVTJPO
DPODMVTJPO w 5XFFO+4ΦϒδΣΫτͷΛม͍͑ͯΔ͚ͩ 5XFFO+4JTKVTUDIBOHJOHWBMVFPGBOPCKFDU w ͍Ζ͍ΖͳදࣔܥϥΠϒϥϦʔͱΈ߹ΘͤՄೳ 5XFFO+4DBOCFVTFEJODPNCJOBUJPOXJUITFWFSBMMJCT w ͨͩ͠ɺ5XFFO+4&BTFM+4ʹґଘ͍ͯ͠Δ 5XFFO+4JTEFQFOEFOUPO&BTFM+4
5XFFO+4ͷػೳ͚ͩΛར༻ͨͯ͘͠&BTFM+4ΛಡΈ͜·ͳ͍͚ͯ͘ͳ͍
JOBEEJUJPO
UXFFOKT IUUQTHJUIVCDPNTPMFUXFFOKT
UXFFOKT var 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();
UXFFOKT EFNP
K2VFSZDBOBMTPEPUIBUTJNJMBS var 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' ); } );
K2VFSZDBOBMTPEPUIBUTJNJMBS EFNP
DPODMVTJPO
FBTJMZ ػೳ GFBUVSFT ґଘ EFQFOEJOHPO 5XFFO+4 UXFFOKT K2VFSZ ؆୯
ॆ࣮ &BTFM+4ʹґଘ ͢͜͠ෳࡶ ॆ࣮ ಛʹFWFOU ͳ͠ ؆୯ ͦΕͳΓ ඞཁʹԠͯ͡K2VFSZ &BTJOH1MVHJO
None
ߪಡ։͔࢝Βؒແྉ ֹ݄ԁ
$PEF(SJE XXXDPEFHSJEOFU
2VFTUJPO !ZPNPUTV