我发现自己处于一个相当脆弱的境地,我正在开发一个 Web 应用程序,其界面几乎完全使用 RaphaelJS 作为 SVG 的前端来表达,但无法访问目标系统(不要让我开始)。目标系统是运行 Windows 7 的Asus Slate 设备,并且支持触摸屏。
我的理解是 Raphael 的drag
支持会自动包含简单的触摸事件——因此触摸屏会自动像鼠标一样工作。但是,可拖动元素在石板上变得不具有交互性。我尝试使用 Raphael 的touchstart
,touchend
和touchmove
events 与我传递给 的相同函数drag
,如下所示:
var element = canvas.circle( canvas.cwidth / 2, canvas.cheight / 2, 100 ).attr( { fill: 'red', stroke: 'black', 'stroke-width': 5, cursor: 'move' } );
var startDrag = function( x, y )
{
console.log("starting drag" );
element.attr( { 'fill-opacity': 0.5 } );
};
var endDrag = function( x, y )
{
console.log("stopping drag" );
element.animate( { transform: "T0,0", fill: 'red', 'fill-opacity': 1 }, 1000, 'bounce' );
};
var continueDrag = function( dx, dy, x, y )
{
var r = Math.sqrt( dx * dx + dy * dy ) / ( canvas.cwidth / 2 ) * 255;
var g = x / canvas.cwidth * 255;
var b = y / canvas.cheight * 255;
element.transform( [ "T", dx, dy ] );
element.attr( 'fill', Raphael.rgb( r, g, b ) );
};
element.touchstart( startDrag );
element.touchend( endDrag );
element.touchmove( continueDrag );
element.drag( continueDrag, startDrag, endDrag );
不幸的是,这根本没有效果。
谁能给我提供任何有用的设备,不包括飞往德克萨斯州以获得对目标设备的开发访问权限?