JavaScript로 카드 놀이를 넘기는 애니메이션을 만들려고했습니다.

소개



카드를 넘기는 애니메이션을 만들어 보았습니다.

1. 폴더 구성



폴더 구성은 다음과 같습니다.
.
 ├── card_turning.html
 ├── cardTurning.js
 ├── clover11.js   
 └── backcard.png

2. 구현



코드는 다음과 같습니다.

card_turning.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>カードを捲るアニメーションプログラム</title>
</head>
<body>
    </div>
        <div>
            <img id='img' src='./backcard.png'/>
        </div>
        <div>
            <button id="button">めくる</button>
        </div>
    <div>
    <script src='./script.js'></script>
</body>
</html>

다음은 JavaScript 코드입니다.

cardTurning.js
const buttonElem = document.getElementById('button');
let isBack = true;

if(buttonElem !== null){
    buttonElem.addEventListener('click', () => {
        const element = document.getElementById('img');
        if(element !== null){
            let imagePath = isBack ? './clover11.png' : './backcard.png';
            rotationAnimationLoop(element, imagePath, 0);
            isBack = !isBack;
        }
    });
}
/* カードを捲る処理を指定された角度になるまでループさせる関数
* @param  {Object} element   imgタグのElement Object
* @param  {String} imagePath 画像のパス
* @return {Number} deg       カードの回転角度
*/
const rotationAnimationLoop = (element, imagePath, deg) =>{
    if( deg <= 180 ){
        rotationAnimation(element, imagePath, deg);
        setTimeout( 
            () => {
                rotationAnimationLoop(element, imagePath, deg+= 5 ) 
            }, 
        1 );
    }
}

/* カードを捲る処理
* @param  {Object} element   imgタグのElement Object
* @param  {String} imagePath 画像のパス
* @return {Number} deg       カードの回転角度
*/
const rotationAnimation = (element, imagePath, deg) =>{
    if ( 90 === deg ){
        element.src =  imagePath;
    }else {
        element.style.webkitTransform = 'rotateY(' + deg + 'deg)';
    }
}

3. 결과



결과는, 이런 느낌이 됩니다.

좋은 웹페이지 즐겨찾기