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
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
880
PBR in three.js
yomotsu
1
1.3k
dialog要素でつくるモーダルダイアログ
yomotsu
0
1.1k
IE to Edge
yomotsu
1
410
A Camera Control Library for three.js
yomotsu
1
1.5k
Let’s try AR on mobile Web with <model-viewer>
yomotsu
0
600
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
act1-costs.pdf
sumedhbala
0
210
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.9k
共通化で考えるべきは、実装より公開する型だった
codeegg
0
220
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
Contextとはなにか
chiroruxx
1
390
えっ!!コードを読まずに開発を!?
hananouchi
0
200
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
550
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
200
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.7k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
180
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
110
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
40k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
The Cost Of JavaScript in 2023
addyosmani
55
10k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.6k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
GitHub's CSS Performance
jonrohan
1033
470k
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