gpt4 book ai didi

actionscript-3 - AS3 - 如何在非垂直或水平的线上拖动对象

转载 作者:行者123 更新时间:2023-12-04 06:41:02 24 4
gpt4 key购买 nike

我想在一行中拖动一个对象。我已经知道如何在水平线或垂直线中执行此操作

我是这样做的

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();
}

但我想将我的对象拖到一条既不水平也不垂直的线上。例如,我想沿着一条直线将对象从左上角拖到右下角。

我尝试旋转边界矩形,但似乎不能旋转矩形。

如何在非垂直(或非水平)线上拖动对象?

非常感谢!

文森特

最佳答案

您不能使用 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;
}
}

}
}

关于actionscript-3 - AS3 - 如何在非垂直或水平的线上拖动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com