我創建一個貓的互動式動畫可以撫摩,揉搓,戳等ActionScript 3.0中手勢跟蹤
我都在試圖識別不同的手勢來實現一些基本的功能,我使用的鼠標向下並向上拖動事件以跟蹤點擊的持續時間和距離。
我的問題是,'距離'是從點擊的起點和終點開始測量的,所以如果它在開始點附近結束,您將無法判斷點擊有多少次'摩擦「來回。
無論如何根據點擊的完整路徑來跟蹤距離嗎?我的代碼如下,有沒有人有一些建議?
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, pressed);
this.stage.addEventListener(MouseEvent.MOUSE_UP, released);
var firsttime:Number;
var lasttime:Number;
var firstx:Number;
var lastx:Number;
var firsty:Number;
var lasty:Number;
var duration:Number;
var distance:Number;
function pressed(e:MouseEvent):void {
firsttime = new Date().getTime();
firstx = mouseX;
firsty = mouseY;
trace("mouse down");
}
function released(e:MouseEvent):void {
lasttime = new Date().getTime();
lastx = mouseX;
lasty = mouseY;
duration = lasttime - firsttime;
distance = pythagoras((firstx-lastx), (firsty-lasty));
trace("mouse up");
trace(duration);
trace(distance);
trace(gesture(duration, distance));
}
function pythagoras(xlen:Number, ylen:Number):Number {
return Math.sqrt((xlen*xlen) + (ylen*ylen));
}
function gesture(duration:Number, distance:Number):String {
if (distance < 1){
if (duration < 200){
return "Sharp Poke";
}
return "Slow Poke";
}
if (duration < 500) {
return "Stroke";
}
return "Rub";
}
我已經看到所有這些手勢類的字母表等它不是我以後。我追求更簡單的東西,我只需要知道'拖'的方向是否已經改變。 – Rumpleteaser 2010-10-28 11:48:54
我不想用額外的不必要的代碼來衡量動畫。這將是非常沉重的,因此需要能夠整天坐着跑步而不會崩潰。 – Rumpleteaser 2010-10-28 11:49:46