使用动作脚本拖放

Posted

技术标签:

【中文标题】使用动作脚本拖放【英文标题】:drag and drop using action script 【发布时间】:2020-03-12 14:36:27 【问题描述】:

我正在尝试使用 flash8 通过鼠标创建拖放事件。

我的代码是:

import flash.events.MouseEvent;
circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,downf);
circle_mc.addEventListener(MouseEvent.MOUSE_UP,upf);
function downf(e:MouseEvent)  circle_mc.startDrag(); 
function upf(e:MouseEvent)  circle_mc.stopDrag(); 

我收到以下错误:

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 3: Statement must appear within on/onClipEvent handler
     circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,downf); 

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 4: Statement must appear within on/onClipEvent handler
     circle_mc.addEventListener(MouseEvent.MOUSE_UP,upf);

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 5: The class or interface 'MouseEvent' could not be loaded.
     function downf(e:MouseEvent) 

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 7: The class or interface 'MouseEvent' could not be loaded.
        function upf(e:MouseEvent)  circle_mc.stopDrag(); 

Total ActionScript Errors: 4     Reported Errors: 4

我不明白为什么会这样。在网上我发现这个错误可能是由于AS3或AS2的版本引起的,但我也找不到我使用的版本。

感谢任何帮助。

【问题讨论】:

【参考方案1】:

您发布的代码显然是 AS3,但由于您使用的是 Flash 8,因此您只能使用 AS2。不过没问题,你当然可以使用 AS2 来实现。

    使用椭圆工具画一个圆,然后使用选择工具选择它 按 F8 将其转换为符号并按 OK 在 Properties 面板中为实例命名,例如circle_mc 打开 Actions 窗口 (F9) 并选择 Scene 1 -> Layer 1 : Frame 1 粘贴以下代码
circle_mc.onPress = function()

    开始拖动(这个,真);

circle_mc.onRelease = 函数()

    this.stopDrag();

【讨论】:

以上是关于使用动作脚本拖放的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 上,如何为 python 脚本创建一个拖放应用程序,其中脚本名称而不是 Python 显示在菜单栏(等)中?

将动作脚本 2 翻译成动作脚本 3

使用动作脚本文件编译 .SWF

将动作脚本 2 转换为动作脚本 3

如何知道是动作脚本 1、动作脚本 2 还是动作脚本 3?

动作脚本 2 在匿名函数中使用局部变量