我怎样才能上下拖动obj.mc

时间:2016-10-24 14:41:58

标签: actionscript-3 flash

请任何人帮助我。我对AS3完全不熟悉。

我有一个叫做obj的mc。

我怎样才能只拖动它:向上向下

以下是我在互联网上找到的代码。

import flash.events.MouseEvent;
import flash.geom.Point;
import flash.events.Event;

var destination:Point=new Point();
var dragging:Boolean=false;
var speed:Number=5;
var offset:Point=new Point(); // our offset

obj.addEventListener(MouseEvent.MOUSE_DOWN,startdrag);
stage.addEventListener(MouseEvent.MOUSE_UP,stopdrag);
obj.addEventListener(Event.ENTER_FRAME,followmouse);

function startdrag(e:MouseEvent):void{
   offset.x=obj.mouseX*obj.scaleX;   // record offset (pt obj is dragged 
   offset.y=obj.mouseY*obj.scaleY;
   dragging=true;
}

function stopdrag(e:MouseEvent):void{
   dragging=false;
}

function followmouse(e:Event):void{
   if(dragging){
      destination.x=mouseX;
      destination.y=mouseY;
   }
   obj.x-=(obj.x-(destination.x-offset.x))/speed;   // apply offset
   obj.y-=(obj.y-(destination.y-offset.y))/speed;
}

1 个答案:

答案 0 :(得分:2)

startDrag()方法

public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void

在发布问题之前检查参考,对不起,但在reference guide startDrag

上已经清楚说明了

这是理解刚设置

方法的最佳方法
bounds:Rectangle = null;

到符合限制的值。 设置边界后,您应该按照自己的意愿进行操作。

我经常将lockCenter设置为false,但您必须了解基础知识。

抱歉,我错过了什么,我的英语很差。 @ Coder3000的答案在你的情况下很好,因为你想平滑地取代对象。

再次,我想回答太快。 :(

因此,要仅上下移动对象,可以删除代码中的以下行:

offset.x=obj.mouseX*obj.scaleX;

destination.x=mouseX;

obj.x-=(obj.x-(destination.x-offset.x))/speed;

因为您不想向左或向右移动此对象