是否可以设置鼠标光标的位置?这就是我想要做的事情:当用户在动画片段上按下鼠标按钮时,动画片段开始拖动,在动画片段中,光标位于动画片段的中间(不要告诉我有关锁定中心因为我不能这样使用它,因为我的movieclip注册点设置在其左上角)。基本上,我希望能够在用户单击时强制光标到达动画片段的中心。这可能吗?
答案 0 :(得分:1)
我没有证据,但我认为你不能像那样控制光标。
另一种方法是隐藏实际的鼠标光标,并添加一个自定义光标,而不是相对于实际光标位置,或者如果更容易,可以在拖动目标的中心。问题是你无法知道用户光标的确切外观。
答案 1 :(得分:0)
换句话说,您正在寻找此功能:SetCursorPos。
您无法使用Flash控制光标。否则你必须解决它 - 如何将你的movieclip的注册点设置到中心?!
答案 2 :(得分:0)
我认为这不可行。鼠标坐标是只读的。
但我会建议其中任何一个:
使用Mouse.hide();
隐藏鼠标。
在鼠标位置创建自己的指针。
根据您的意愿控制此指针。
或
答案 3 :(得分:0)
扩展loxxy的回复:
不是使用lockCenter
将鼠标光标移动到对象的中心,而是可以在对象上触发MouseEvent.MOUSE_DOWN
事件时手动将对象移动到鼠标光标的中心位置(仅在对象上调用startDrag
之前
这是一个简单的例子:
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Main extends Sprite{
public function Main() {
var drag_object:Sprite = new Sprite()
drag_object.graphics.beginFill(0xFF0000, .5);
drag_object.graphics.drawRect(0, 0, 50, 50);
drag_object.graphics.endFill();
drag_object.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
drag_object.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
drag_object.x = 200;
drag_object.y = 300;
addChild(drag_object);
}
private function onMouseDown(e:MouseEvent):void {
var obj:Sprite = e.target as Sprite;
obj.x = e.stageX - (obj.width * .5);
obj.y = e.stageY - (obj.height * .5);
obj.startDrag();
}
private function onMouseUp(e:MouseEvent):void {
var obj:Sprite = e.target as Sprite;
obj.stopDrag();
}
}
}