如何调整对象的拖动速度?

时间:2015-10-08 20:42:19

标签: actionscript-3 flash air

好的,我正在开发一款游戏,要求玩家拖动一个物体并将其放在一个罐子里面。我发现指定x坐标限制要容易得多,以便确定拖动对象何时应该模拟掉入jar中。到目前为止我的代码完美无缺。但是,当玩家在x限制上移动对象太快时,将忽略当对象超过x坐标限制时启动的动作脚本。我认为我可以通过限制拖动对象的速度来解决这个问题。有没有人对如何实现这一目标有任何指导?

这是我的代码:

jarFront.mouseEnabled = false; jarFront.mouseChildren = false;

// animate buttons in
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.events.Event;

var objArray:Array = new Array;

objArray.push(obj1);
objArray.push(obj2);
objArray.push(obj3);

var objPosition:Point;

function dragobj(e:Event):void {
e.currentTarget.startDrag();
objPosition = new Point( e.currentTarget.x, e.currentTarget.y);
}           
function dragobjStop(e:Event):void {
    e.currentTarget.stopDrag(); 
    e.currentTarget.x = e.currentTarget.x;
    e.currentTarget.y = objPosition.y;
    objPosition = null;
}


for (var i:uint = 0; i < objArray.length; i++) {
    objArray[i].addEventListener(MouseEvent.MOUSE_DOWN, dragobj);
    objArray[i].addEventListener(MouseEvent.MOUSE_UP, dragobjStop);
}

// Drop in jar



var HighH:int=400;
var HighW:int=400;
var LowH:int=-200; var LowW:int=0;
var HighyH:int=170;
var HighyW:int=170;
var LowyH:int=0; var LowyW:int=0;

this.addEventListener( Event.ENTER_FRAME, goJar)
function goJar( e:Event ):void
{
  if (obj1.x > 400 && obj1.x < 440) { 
        obj1.stopDrag();
           //set back or tween position 
           obj1.x = 83;
           obj1.y = -300;
           this.setChildIndex(obj1,1)
           var ct1_1:Tween = new Tween(obj1, "y", None.easeNone, obj1.y, obj1.y=Math.floor(Math.random()*(1+HighyH-LowyH))+LowyH, .2, true);
           var ct1_2:Tween = new Tween(obj1, "rotation", Bounce.easeOut, 0, 180, 1, true);
           var ct1_3:Tween = new Tween(obj1, "x", None.easeNone, obj1.x, obj1.x=Math.floor(Math.random()*(1+HighH-LowH))+LowH, .2, true);

    } else {


// keep inside jar

        if (obj1.x > -330 && obj1.x < -260) { 
        obj1.stopDrag();
           //set back or tween position 
           obj1.x = 83;
           obj1.y = -300;
           this.setChildIndex(obj1,1)
           var ct1_4:Tween = new Tween(obj1, "y", None.easeNone, obj1.y, obj1.y=Math.floor(Math.random()*(1+HighyH-LowyH))+LowyH, .2, true);
           var ct1_5:Tween = new Tween(obj1, "rotation", Bounce.easeOut, 0, 180, 1, true);
           var ct1_6:Tween = new Tween(obj1, "x", None.easeNone, obj1.x, obj1.x=Math.floor(Math.random()*(1+HighH-LowH))+LowH, .2, true);

    }
}

}

此外,如果有一种方法可以在上面的数组函数中包含“// Drop in jar”中的所有内容,那么这个动作脚本可以自动应用于obj2和obj3,这将非常有用。

1 个答案:

答案 0 :(得分:0)

您没有任何代码可以限制拖动对象的移动。如果要限制对象位置,只需将Rectangle对象传递给startDrag方法。