拖放文本字段 AS3
Drag and Drop Text Fields AS3
我正在尝试使用 Action 脚本 3 使文本字段在 Flash 中可拖动,
我知道如何使常规对象可拖动,但是当我尝试拖动文本字段时出现问题。
对于常规对象,我一直在使用以下代码:
事件侦听器:
Object.addEventListener(MouseEvent.MOUSE_DOWN, MouseDOWN);
Object.addEventListener(MouseEvent.MOUSE_UP, MouseUP);
函数:
function MouseDOWN(evt:Event):void {
evt.target.startDrag();
}
function MouseUP(evt:Event):void {
evt.target.stopDrag();
}
我尝试了很多方法,例如将 'target' 更改为 'currentTarget' 等,但仍然找不到解决方案。
所以我的问题是,如何使文本字段可选择和拖动?
startDrag();
和stopDrag();
是Sprite
class的方法,也被MovieClip
继承,是子class共 Sprite
最好查看 Adobe 官方文档以了解哪些 class 继承了哪些方法;
因为Sprite
和MovieClip
都是DisplayObjectContainer
class的基础class,简单的解决方案是简单地存储TextField
object inside a Sprite
object using addChild();
var textBox:TextField = new TextField;
textBox.text = "sometext";
var textContainer:Sprite = new Sprite();
textContainer.addChild(textBox);
textContainer.startDrag();
addChild(textContainer);
然后您可以使用 Sprite
的所有功能将其拖过舞台。
编辑:
另一种选择是使用您自己的自定义 class 扩展 TextField class 并实现您自己的 startDrag()
和 stopDrag()
方法。
然后您将有一个 public update()
方法,您可以从主 class 调用该方法,该方法将接受 mouseX
、mouseY
然后设置对象的 x
、y
属性。您可以使用简单的 Boolean
.
打开和关闭此功能
是的,它需要更多的工作,但是如果出于某种原因你需要使用 TextField
类型的对象(例如,如果你需要将它传递给另一个需要它是 [=19] 类型的对象=]),那么你的 class 也将是 TextField
的一种类型,因为它继承了它作为基础 class.
我正在尝试使用 Action 脚本 3 使文本字段在 Flash 中可拖动,
我知道如何使常规对象可拖动,但是当我尝试拖动文本字段时出现问题。
对于常规对象,我一直在使用以下代码:
事件侦听器:
Object.addEventListener(MouseEvent.MOUSE_DOWN, MouseDOWN);
Object.addEventListener(MouseEvent.MOUSE_UP, MouseUP);
函数:
function MouseDOWN(evt:Event):void {
evt.target.startDrag();
}
function MouseUP(evt:Event):void {
evt.target.stopDrag();
}
我尝试了很多方法,例如将 'target' 更改为 'currentTarget' 等,但仍然找不到解决方案。
所以我的问题是,如何使文本字段可选择和拖动?
startDrag();
和stopDrag();
是Sprite
class的方法,也被MovieClip
继承,是子class共 Sprite
最好查看 Adobe 官方文档以了解哪些 class 继承了哪些方法;
因为Sprite
和MovieClip
都是DisplayObjectContainer
class的基础class,简单的解决方案是简单地存储TextField
object inside a Sprite
object using addChild();
var textBox:TextField = new TextField;
textBox.text = "sometext";
var textContainer:Sprite = new Sprite();
textContainer.addChild(textBox);
textContainer.startDrag();
addChild(textContainer);
然后您可以使用 Sprite
的所有功能将其拖过舞台。
编辑:
另一种选择是使用您自己的自定义 class 扩展 TextField class 并实现您自己的 startDrag()
和 stopDrag()
方法。
然后您将有一个 public update()
方法,您可以从主 class 调用该方法,该方法将接受 mouseX
、mouseY
然后设置对象的 x
、y
属性。您可以使用简单的 Boolean
.
是的,它需要更多的工作,但是如果出于某种原因你需要使用 TextField
类型的对象(例如,如果你需要将它传递给另一个需要它是 [=19] 类型的对象=]),那么你的 class 也将是 TextField
的一种类型,因为它继承了它作为基础 class.