请任何人帮助我。我对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;
}
答案 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;
因为您不想向左或向右移动此对象