javascript - HTML5 Canvas Flip Card Animation - Stack Overflow

I am trying to create flip card effect using html canvas by drawing it in the canvas.no ccs3 tricks nee

I am trying to create flip card effect using html canvas by drawing it in the canvas.

no ccs3 tricks needed. It should be done in a native manner;

this is my initial test using phaser.js by changing the scale

<html>
<head>

</head>
    <body>
        <div id="game_canvas">


        </div>
        <script src = "jquery.min.js"></script>
        <script src = "phaser.min.js"></script>

        <script>

        var game;
        var sprite;

            $(document).ready(function(){

                game = new  Phaser.Game(640, 480, Phaser.AUTO, 'game_canvas', {
                    preload : preload,
                    create : create,
                    update : update

                });

                function preload () {

                    game.load.image('card','download.png');

                }

                function create() {

                    this.delay = 1000;
                    this.spawn = 0;

                    sprite = game.add.sprite(game.width/4, game.height/4, 'card');

                }

                function update() {

                    console.log(this.spawn > game.time.now);

                    if (this.spawn > game.time.now) {
                        return;
                    }

                    this.spawn = game.time.now + this.delay;

                    sprite.scale.x *= -1;

                }

            });

        </script>

    </body>
</html>

and what i want to attain is like this using the canvas

anyone has any idea on how to do it would be a great help

thanks in advance

here is the current demo /

I am trying to create flip card effect using html canvas by drawing it in the canvas.

no ccs3 tricks needed. It should be done in a native manner;

this is my initial test using phaser.js by changing the scale

<html>
<head>

</head>
    <body>
        <div id="game_canvas">


        </div>
        <script src = "jquery.min.js"></script>
        <script src = "phaser.min.js"></script>

        <script>

        var game;
        var sprite;

            $(document).ready(function(){

                game = new  Phaser.Game(640, 480, Phaser.AUTO, 'game_canvas', {
                    preload : preload,
                    create : create,
                    update : update

                });

                function preload () {

                    game.load.image('card','download.png');

                }

                function create() {

                    this.delay = 1000;
                    this.spawn = 0;

                    sprite = game.add.sprite(game.width/4, game.height/4, 'card');

                }

                function update() {

                    console.log(this.spawn > game.time.now);

                    if (this.spawn > game.time.now) {
                        return;
                    }

                    this.spawn = game.time.now + this.delay;

                    sprite.scale.x *= -1;

                }

            });

        </script>

    </body>
</html>

and what i want to attain is like this using the canvas

http://www.turnjs./#samples/steve-jobs/10

anyone has any idea on how to do it would be a great help

thanks in advance

here is the current demo http://sopronioli713.github.io/test/

Share Improve this question edited Apr 4, 2015 at 7:00 Josua M C 3,1586 gold badges46 silver badges88 bronze badges asked Mar 11, 2015 at 14:36 Oli Soproni B.Oli Soproni B. 2,8003 gold badges24 silver badges47 bronze badges 4
  • Are you looking for a book flip or a card flip? For a card flip just scale the image front-face along the X-direction (so it shrinks), then once that has a width of 0 or so change the image to the back-face and scale it in the back to normal. Also, could you provide a fiddle or snippet so we can see your example running? – Spencer Wieczorek Commented Mar 11, 2015 at 14:47
  • a card flip. but i want to attain the animation of the turn.js in the above link. – Oli Soproni B. Commented Mar 11, 2015 at 15:30
  • why my question is downvoted? – Oli Soproni B. Commented Mar 11, 2015 at 15:31
  • @OliSoproniB. did you make it? – Karma Blackshaw Commented Jun 20, 2022 at 2:38
Add a ment  | 

1 Answer 1

Reset to default 3

Here's a canvas based card flip (with rotation) that I did a while back for fun.

It works by scaling in just the X direction so that the card appears to be flipping.

Notes about the effect:

You can omit the rotations if they are not required.

This effect translates to the horizontal center of the card before scaling (flipping) which makes the card "spin". If you instead want a "dealers flip" then you would instead translate to the edge of the card.

var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;

var x=150;
var y=150;
var scaleX=100;
var angle=0;
var scaleDirection=-1;
var scaleDelta=1;
var PI2=Math.PI*2;

var backCanvas=document.createElement('canvas');
var backCtx=backCanvas.getContext('2d');
var imgCount=2;
var front=new Image();front.onload=start;front.src="https://dl.dropboxusercontent./u/139992952/multple/kingcard.png";
var back=new Image();back.onload=start;back.src="https://dl.dropboxusercontent./u/139992952/multple/kingcardback.png";
function start(){
  if(--imgCount>0){return;}
  animate();
}


function draw(x,y,scaleX,angle){
  ctx.clearRect(0,0,cw,ch);
  ctx.translate(x,y);
  ctx.rotate(angle);
  ctx.scale(scaleX,1);
  if(scaleX>=0){
    ctx.drawImage(front,-front.width/2,-front.height/2);
  }else{
    ctx.drawImage(back,-back.width/2,-back.height/2);
  }
  ctx.setTransform(1,0,0,1,0,0);
}

function animate(time){
  draw(x,y,scaleX/100,angle);
  angle+=PI2/720;
  scaleX+=scaleDirection*scaleDelta;
  if(scaleX<-100 || scaleX>100){
    scaleDirection*=-1;
    scaleX+=scaleDirection*scaleDelta;
  }
  requestAnimationFrame(animate);
}
body{ background-color: ivory; }
#canvas{border:1px solid red;}
<canvas id="canvas" width=300 height=300></canvas>

On the other hand...

You link to a page-turning demo--which is a totally different animal. If that's what your after Rick Barraza has done a nice writeup on how to do that here: http://rbarraza./html5-canvas-pageflip/

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745655132a4638498.html

相关推荐

  • javascript - HTML5 Canvas Flip Card Animation - Stack Overflow

    I am trying to create flip card effect using html canvas by drawing it in the canvas.no ccs3 tricks nee

    11小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信