Hello,

I have a simple web app that consists of a circle moving around. When
I do a swipe, the app freezes and the circle stops moving, and I have
to do another swipe/tap to set it in motion again. This only happens
in Andoid 2.2 devices (2.3 works OK). Does anyone know why this
happens? How can I avoid this?

Here's the code:


<!doctype html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Canvas Test</title>
        <script type="text/javascript" src="touch.js"></script>
  </head>
<body>
  <section>
    <div>
        <canvas id="canvas" width="400" height="300">
         This text is displayed if your browser
         does not support HTML5 Canvas.
        </canvas>
                <canvas id="canvas2" width="400" height="300">
         This text is displayed if your browser
         does not support HTML5 Canvas.
        </canvas>
    </div>

        <script type="text/javascript">
        var canvas;
        var ctx;
        var x = 400;
        var y = 300;
        var dx = 2;
        var dy = 4;
        var WIDTH = 400;
        var HEIGHT = 300;

        function circle(x,y,r) {
          ctx.beginPath();
          ctx.arc(x, y, r, 0, Math.PI*2, true);
          ctx.fill();
        }

        function rect(x,y,w,h) {
          ctx.beginPath();
          ctx.rect(x,y,w,h);
          ctx.closePath();
          ctx.fill();
        }


        function clear() {
          ctx.clearRect(0, 0, WIDTH, HEIGHT);
        }

        function init() {

                document.getElementById('canvas').addEventListener('touchstart',
touchStart);
                document.getElementById('canvas').addEventListener('touchmove',
touchMove);
                document.getElementById('canvas').addEventListener('touchend',
touchEnd);

                canvas = document.getElementById("canvas");
                ctx = canvas.getContext("2d");
                return setInterval(draw, 10);
        }

        function draw() {
          clear();
          ctx.fillStyle = "#FAF7F8";
          rect(0,0,WIDTH,HEIGHT);
          ctx.fillStyle = "#444444";
          circle(x, y, 10);

          if (x + dx > WIDTH || x + dx < 0)
                dx = -dx;
          if (y + dy > HEIGHT || y + dy < 0)
                dy = -dy;

          x += dx;
          y += dy;
        }

        init();
        </script>
  </section>
</body>
</html>


<<--- touch.js --->>

var triggerElementID = null;
var fingerCount = 0;
var startXPosition = 0;
var startYPosition = 0;
var currentXPosition = 0;
var currentYPosition = 0;
var minLength = 72;
var swipeLength = 0;
var swipeDirection = null;

function touchStart(event,passedName) {
        event.preventDefault();
        fingerCount = event.touches.length;

        if (fingerCount == 1 ) {
                startXPosition = event.touches[0].pageX;
                startYPosition = event.touches[0].pageY;
                triggerElementID = passedName ? passedName : this.id;
        } else {
                touchCancel(event);
        }
}

function touchMove(event) {
        event.preventDefault();

        if (event.touches.length == 1 ) {
                currentXPosition = event.touches[0].pageX;
                currentYPosition = event.touches[0].pageY;
        } else {
                touchCancel(event);
        }
}


function touchEnd(event) {
        try {
                event.preventDefault();
                if ( fingerCount == 1 && currentXPosition != 0 ) {
                        currentXPosition = event.touches[0].pageX;
                        currentYPosition = event.touches[0].pageY;

                        swipeLength = 
Math.round(Math.sqrt(Math.pow(currentXPosition -
startXPosition,2) + Math.pow(currentYPosition - startYPosition,2)));

                        if ( swipeLength >= minLength ) {
                                caluculateAngle();
                        }
                }
        } finally {
                touchCancel(event);
        }
}


function touchCancel(event) {
        fingerCount = 0;
        startXPosition = 0;
        startYPosition = 0;
        currentXPosition = 0;
        currentYPosition = 0;
        swipeLength = 0;
        swipeDirection = null;
        triggerElementID = null;
}

Thanks!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to