Mercurial > tiny-letterpress
diff index.html @ 1:66a402d86094
added basic mouse support
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Sun, 02 May 2010 04:23:55 -0700 |
parents | 293976bb90c5 |
children | f7ed81674650 |
line wrap: on
line diff
--- a/index.html Sat May 01 17:39:57 2010 -0700 +++ b/index.html Sun May 02 04:23:55 2010 -0700 @@ -9,9 +9,9 @@ -webkit-transition-property: -webkit-transform, color; -webkit-transition-duration: 0.1s, 0.2s; -webkit-transition-timing-function: linear; + position: absolute; cursor: pointer; font-size: 144pt; - width: 1em; } div.letter .info { @@ -140,8 +140,10 @@ var matrix = new WebKitCSSMatrix(); function updateInfo() { - //query.find(".info").text("curr: " + currX + ", " + currY + "\n" + - // "start: " + startX + ", " + startY); + var msg = ""; + if (isMouseDown) + msg = "x: " + matrix.e + "\ny: " + matrix.f; + $(node).find(".info").text(msg); } function move() { @@ -151,30 +153,77 @@ updateInfo(); - $(node).bind("touchstart", function(event) { - event.preventDefault(); - startX = event.targetTouches[0].pageX; - startY = event.targetTouches[0].pageY; - updateInfo(); - $(this).addClass("active"); - }); + if (!isTouchSupported) { + var isMouseDown = false; + + $(node).bind("mousedown", function(event) { + event.preventDefault(); + startX = event.clientX; + startY = event.clientY; + isMouseDown = true; + $(this).addClass("active"); + updateInfo(); + }); + + $(node).bind("mousemove", function(event) { + if (isMouseDown) { + currX = event.clientX; + currY = event.clientY; + move(this); + startX = currX; + startY = currY; + updateInfo(); + } + }); + + function maybeDeactivate(event) { + if (isMouseDown) { + event.preventDefault(); + isMouseDown = false; + $(this).removeClass("active"); + updateInfo(); + } + } - $(node).bind("touchmove", function(event) { - event.preventDefault(); - currX = event.targetTouches[0].pageX; - currY = event.targetTouches[0].pageY; - move(this); - startX = currX; - startY = currY; - updateInfo(); - }); + $(node).bind("mouseout", maybeDeactivate); + $(node).bind("mouseup", maybeDeactivate); + } else { + $(node).bind("touchstart", function(event) { + event.preventDefault(); + startX = event.targetTouches[0].pageX; + startY = event.targetTouches[0].pageY; + updateInfo(); + $(this).addClass("active"); + }); - $(node).bind("touchend", function(event) { - event.preventDefault(); - $(this).removeClass("active"); - }); + $(node).bind("touchmove", function(event) { + event.preventDefault(); + currX = event.targetTouches[0].pageX; + currY = event.targetTouches[0].pageY; + move(this); + startX = currX; + startY = currY; + updateInfo(); + }); + + $(node).bind("touchend", function(event) { + event.preventDefault(); + $(this).removeClass("active"); + }); + } } +var isTouchSupported = (function isTouchSupported() { + try { + document.createEvent("TouchEvent"); + return true; + } catch (e) { + if (e.code != e.NOT_SUPPORTED_ERR) + throw e; + return false; + } +})(); + $(window).bind("DOMContentLoaded", function() { $(".letter").each(makeDraggable); });