Actionscript 3 AS3-如何在非垂直或水平线中拖动对象
我想把一个物体拖成一行。 我已经知道如何在水平线或垂直线上进行此操作 我是这样做的Actionscript 3 AS3-如何在非垂直或水平线中拖动对象,actionscript-3,drag,Actionscript 3,Drag,我想把一个物体拖成一行。 我已经知道如何在水平线或垂直线上进行此操作 我是这样做的 private var handle:Sprite; private function init():void { handle = new Sprite(); handle.mouseChildren = false; handle.buttonMode = true; handle.graphics.beginFill(0xFF0000); handle.graphi
private var handle:Sprite;
private function init():void
{
handle = new Sprite();
handle.mouseChildren = false;
handle.buttonMode = true;
handle.graphics.beginFill(0xFF0000);
handle.graphics.drawCircle(0, 0, 5);
handle.addEventListener(MouseEvent.MOUSE_DOWN, startMove);
handle.addEventListener(MouseEvent.MOUSE_UP, stopMove);
}
private function startMove(evt:MouseEvent):void
{
var bounds:Rectangle = new Rectangle(0, 0, 100, 1);
handle.startDrag(false, bounds);
}
private function stopMove(evt:MouseEvent):void
{
handle.stopDrag();
}
但我想把我的物体拖成一条不是水平或垂直的线。
例如,我想沿一条直线将对象从左上角拖动到右下角
我试图旋转边界矩形,但似乎无法旋转矩形
如何在非垂直(或非水平)线上拖动对象
多谢各位
Vincent您不能使用startdrag系统来执行此操作。您必须自己使用enterframe事件和约束x/y:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Test extends Sprite
{
private var handle:Sprite;
public function Test()
{
handle = new Sprite();
addChild(handle);
handle.mouseChildren = false;
handle.buttonMode = true;
handle.graphics.beginFill(0xFF0000);
handle.graphics.drawCircle(0, 0, 5);
handle.addEventListener(MouseEvent.MOUSE_DOWN, startMove);
addEventListener(MouseEvent.MOUSE_UP, stopMove);
}
private function startMove(evt:MouseEvent):void
{
stage.addEventListener(Event.ENTER_FRAME, updateClipPos);
}
private function stopMove(evt:MouseEvent):void
{
stage.removeEventListener(Event.ENTER_FRAME, updateClipPos);
}
private function updateClipPos(e:Event) : void
{
if(mouseX < 100)
{
handle.x = mouseX;
handle.y = handle.x;
}
}
}
}
包
{
导入flash.display.Sprite;
导入flash.events.Event;
导入flash.events.MouseEvent;
公共类测试扩展了Sprite
{
私有变量句柄:Sprite;
公共功能测试()
{
句柄=新精灵();
addChild(handle);
handle.mouseChildren=false;
handle.buttonMode=true;
handle.graphics.beginll(0xFF0000);
handle.graphics.drawCircle(0,0,5);
handle.addEventListener(MouseEvent.MOUSE_向下,开始移动);
addEventListener(MouseEvent.MOUSE_UP,stopMove);
}
私有函数启动移动(evt:MouseeEvent):无效
{
stage.addEventListener(Event.ENTER_FRAME,updateClipPos);
}
私有函数stopMove(evt:MouseEvent):无效
{
stage.removeEventListener(Event.ENTER_FRAME,updateClipPos);
}
私有函数updateClipPos(e:事件):void
{
如果(鼠标数<100)
{
handle.x=mouseX;
handle.y=handle.x;
}
}
}
}
您是否尝试过使用高度大于1的矩形?e、 g.var界限:矩形=新矩形(0,0,100,100)代码>@Adam,谢谢你的回复。但是,如果将高度设置为大于1,则不再沿一条直线拖动。我想让我的对象只跟随一行。这只是猜测,这就是为什么我发布的是作为一个评论。另一个猜测:您是否尝试旋转父容器?