๐ป Programming/Javascript
[Javascript / ์๋ฐ์คํฌ๋ฆฝํธ] ๊ฐ์ข #19 - Animation ( ์ ๋๋ฉ์ด์ )
์, ์ด๋ฒ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ํ๋ฉด์ ์ ๋๋ฉ์ด์ ์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ ํ๋ฒ ๋ฐฐ์๋ณผ๊น์?
์์ํ๊ธฐ ์ ์ ์ด๋ฏธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ ์ ๋๋ฉ์ด์ ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ณ ๋์ด๊ฐ์๋ค. ( Script.Aculo.us. )
์ด๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐํธํ๊ฒ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ์ ์๊ฒ ์ง๋ง ๊ทธ๋๋ ์ด๋ค์์ผ๋ก ๋์์ ํ๋์ง๋ ์๊ณ ๋์ด๊ฐ์ผ ๋์ค์ ๋ณธ์ธ์ด ์ด๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ํด์ ๋ ์ข๊ฒ ๋ฐ๊ฟ ์๋ ์์ต๋๋ค.
๊ทธ๋ผ ์์ํด๋ณผ๊น์? ์ด๋ฒ ํฌ์คํ ์์๋ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ๋ํด์ ๋ค๋ฃฐ ๊ฒ๋๋ค. ์ด๋ค ์์ผ๋ก ์ ๋๋ฉ์ด์ ์ด ์์ฑ์ด ๋๋์ง ๋ง์ด์ฃ .
๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ํจ์๋ถํฐ ํ์ธ์ ํด๋ณผ๊น์?
-
setTimeout( ํจ์๋ช , ๋ฐ๋ฆฌ์ด) - ์ง์ ํ ๋ฐ๋ฆฌ์ด ํ์ ํจ์๋ฅผ ์คํ์ํต๋๋ค. ( ํจ์๊ฐ ์ข ๋ฃ๋ ๋ค์ ํน์ ์๊ฐ์ด ์ง๋๋ฉด ๋ค์ ํจ์๋ฅผ ์คํ์ํต๋๋ค. )
-
setInterval( ํจ์๋ช , ๋ฐ๋ฆฌ์ด) - ์ง์ ํ ๋ฐ๋ฆฌ์ด๊ฐ ์ง๋ ๋๋ง๋ค ํ๋ฒ์ฉ ํจ์๋ฅผ ์คํ์ํต๋๋ค. ( ์คํ์ํจ ํจ์๊ฐ ๋๋์ง ์์๋ ํน์ ์๊ฐ์ด ์ง๋๋ฉด ๋ ์คํ์ํต๋๋ค. )
-
clearTimeout( setTimeout() ํจ์์ ๋ณ์ ) - setTimeout() ํจ์์ ๋ณ์์ ํ์ด๋จธ๋ฅผ ํด๋ฆฌ์ด์ํต๋๋ค. ( ๋ฌด์จ ๋ง์ธ์ง๋ ์์ ๋ฅผ ๋ณด๋ฉด ์ดํด๊ฐ ๊ฐ์ค๊ฒ๋๋ค. )
๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ๊ธฐ ์ ์ DOM ๊ฐ์ฒด์ ์์ฑ์ ์ด์ฉํด์ ํน์ ๊ฐ์ฒด์ ์์น๋ฅผ ์กฐ์ ํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ๋์ด๊ฐ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. top ์ด๋ left ๊ฐ์ ์์ฑ์ ์ค ์ ์๋๊ฑฐ์ฃ . ๊ฐ๋จํ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
|
์๋์ ์ ๋๋ฉ์ด์
์ด๋ฒ ์์ ๋ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ด๋ฏธ์ง๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก 10ํฝ์ ์ฉ ์์ง์ฌ์ฃผ๋ ์์ ์ ๋๋ค. ๋ฒํผ์ ๋๋ฅด๋ฉด moveRight()ํจ์๋ฅผ ํธ์ถ์ ํ๋๋ฐ ์ด ํจ์๋ imgObj.style.left๋ฅผ ์ด์ฉํด์ ์ผ์ชฝ์์ ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ์ง์ ํด์ค๋๋ค. init()์์๋ left์ ์ด๊ธฐ๊ฐ์ ์ง์ ํด์ฃผ๋๋ฐ ์ด ์ด๊ธฐ๊ฐ์ ์ซ์๋ก ๋ณํํ๋ค์ 10์ ๋ํ๊ฐ์ ๋ค์ left์ ๋ฃ์ด์ฃผ๊ณ ์๋ค์. ์ฆ, ์ด๊ธฐ์์น์์ ๊ณ์ 10์ฉ ๋ํด์ง๋ ํจ์๊ฐ ๋๋ ๊ฒ์ ๋๋ค. ์ดํด๊ฐ ์๋์๋ฉด init()์์ left์ ์ซ์๋ฅผ ๋ณ๊ฒฝํด์ค๋ค์ moveRight()์์ parseInt(...)๋ถ๋ถ์ ๋นผ๊ณ ๊ทธ๋ฅ 10 + 'px'๋ง left์ ํ ๋นํด์ค ๋ณด์ธ์.
|
์ ์์ ์ ๋ํ ๋จ๊ณ์ ์คํ์ ์๋์ ๊ฐ์ต๋๋ค.
-
์๋ฐ์คํฌ๋ฆฝํธ์ getElementById() ํจ์๋ฅผ ์ด์ฉํด์ DOM ๊ฐ์ฒด๋ฅผ ์ป์ด์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฏธ์ง๊ฐ ๋๊ฒ ์ฃ . ๊ทธ๋ ๊ฒ ์ป์ด์จ ๊ฐ์ฒด๋ฅผ imgObj ๋ณ์์ ํ ๋นํฉ๋๋ค.
-
Window๊ฐ ๋ก๋๋ ๋ init() ํจ์๊ฐ ์คํ์ด ๋๋ฉด์ imgObj ๊ฐ์ฒด์ position ๊ณผ left ์์ฑ์ ์ด๊ธฐํ ํด์ค๋๋ค.
-
๊ทธ๋ฆฌ๊ณ ๋ฒํผ์ด ํ๋ฉด์ ์์ฑ์ด ๋๊ณ , ์ด ๋ฒํผ์ด ํด๋ฆญ์ด ๋๋ ์๊ฐ moveRight() ํจ์๊ฐ ํธ์ถ๋๋ฉด์ left ๊ฑฐ๋ฆฌ๊ฐ 10 ํฝ์ ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค. ์ด ์ซ์์ ๋ง์ด๋์ค ๋ถํธ๋ฅผ ๋ถ์ด๋ฉด ๋ฐ๋์ชฝ์ผ๋ก ์์ง์ด๊ฒ ๋ฉ๋๋ค.
์๋ ์ ๋๋ฉ์ด์
์์์๋ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ์์ง์ด๋๋ก ํ์ง๋ง ์ด๋ฒ์๋ ์๊ฐ์ ๋ฐ๋ผ์ ์์ง์ด๋๋ก ํด๋ณด๊ฒ ์ต๋๋ค. ์ ์ผ ์ฒ์์ ์ค๋ช ๋๋ฆฐ ์ธ๊ฐ์ง ํจ์๋ค ์ค์์ setTimeout() ํจ์๋ฅผ ์ด์ฉํ๋ ์์ ์ ๋๋ค.
|
์ด๋ฒ์๋ ์์๊ณผ ์ข ๋ฃ๋ฒํผ ๋๊ฐ๊ฐ ์๊ฒผ๊ณ ์์๋ฒํผ์ ๋๋ฅด๋ฉด moveRight()ํจ์๊ฐ ํธ์ถ์ด ๋๋๋ฐ ์ฒซ๋ฒ์งธ ์์ ์์ ์ฐ์๋ moveRight()๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅด๋ค์ ๊ทธ์ตธ? ํ์ค์ด ๋ ์๊ฒผ์ต๋๋ค. animate๋ณ์์ setTimeout(moveRight, 20)์ ํ ๋นํด์ฃผ์๋ค์. setTimeout ํจ์๋ฅผ ์ด์ฉํด์ moveRightํจ์๋ฅผ 20๋ฐ๋ฆฌ์ด ๋ง๋ค ์คํ์ ์ํค๊ณ ์์ต๋๋ค.
๋ง์ฐ์ค ์ด๋ฒคํธ๋ฅผ ์ด์ฉํ ์ ๋๋ฉ์ด์
์๋ ์์ ๋ ๋ง์ฐ์ค๊ฐ ํน์ ์ด๋ฏธ์ง ์์ ์ฌ๋ผ๊ฐ์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๊ฒ์ ๋๋ค.
|
์ ์์ค๊ฐ ์คํ๋๋ ์์๋ฅผ ํ๋ฒ ๋ณผ๊น์?
-
ํ์ด์ง๊ฐ ๋ก๋ฉ๋ ๋ if ๋ฌธ์์ ์ด๋ฏธ์ง ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋์ง ๊ฒ์ฌํฉ๋๋ค. ์ด๋ฏธ์ง ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ฉด ๋ธ๋ฝ๋ด์ ๋ช ๋ น์ ์คํํ์ง๋ง ์กด์ฌํ์ง ์์ผ๋ฉด ์คํํ์ง ์์ต๋๋ค.
-
Image() ์์์๋ฅผ ์ด์ฉํด์ 2๊ฐ์ ์ด๋ฏธ์ง ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ฐ๊ฐ์ ์ด๋ฏธ์ง ์์ค๋ฅผ ์ง์ ํด์ค๋๋ค.
-
<a>์์ # (hash mark) ๋ ๋งํฌ๋ฅผ ์์ ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ํด๋ํ์ ๋ ํน์ URL๋ก ๊ฐ๋ ค๋ ์๋๋ฅผ ์ํ๊ฒ ๋ฉ๋๋ค.
-
onMouseOver ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ๋ง์ฐ์ค๊ฐ ๋งํฌ(์ด๋ฏธ์ง) ์์ ์ฌ๋ผ์ฌ ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ์์ฑ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋๋ก onMouseOut ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ๋ง์ฐ์ค๊ฐ ๋งํฌ(์ด๋ฏธ์ง)๋ฐ์ผ๋ก ๋๊ฐ ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
์ง์ ํ ์คํธํด๋ณด๊ณ ์ด๊ฒ์ ๊ฒ ๋ฐ๊ฟ์๋ ํด๋ณด์ธ์. ๊ทธ๋์ผ ์ค๋ ฅ์ด ์๊น๋๋ค. ๊ฐ๋ฐ์๋ก์์ ํ์ด ์๊ธฐ๋ ๊ฑฐ์ฃ .
๊ฒ์์ผ๋ฆญํฐํํ ์์ดํ ๋ง ์ฌ์ฃผ์ง ๋ง๊ณ ์ฌ๋ฌ๋ถ์ ํ์ ๊ธธ๋ฌ๋ณด์ธ์.
Reference : http://www.tutorialspoint.com/javascript/javascript_animation.htm