如何在FLASH中制作可拖动的图形符号?

时间:2009-12-24 15:37:53

标签: flash actionscript

你能告诉一下这个工作的动作脚本代码是什么样的吗?

4 个答案:

答案 0 :(得分:0)

您使用StartDrag()和StopDrag()

http://edutechwiki.unige.ch/en/Flash_drag_and_drop_tutorial

答案 1 :(得分:0)

你的意思是Shape类对象或Graphics类对象? Shape类派生自DisplayObject,因此没有对此的交互支持,并且无法实例化Graphics类对象。为了制作可拖动的东西,需要将图形放在一些Sprite对象中。

答案 2 :(得分:0)

这是一种方式:

创建名为“Circle”的MovieClip。右键单击库中的符号,选择“属性”>选中“链接”框,然后选择“导出为Actionscript”。将类命名为“Circle”。您可以使用flash.display.MovieClip作为基类。

然后,在与.fla文件相同的文件夹中,创建一个名为“Circle.as”的文本文件(记住使用大写C,就像命名MovieClip一样)并输入以下内容:

package {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class Circle extends MovieClip {
        public function Circle () {
            this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
            this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

            this.buttonMode = true;
            this.mouseChildren = false;
        }

        private function mouseDownHandler(e:MouseEvent):void {
            startDrag();
        }

        private function mouseUpHandler(e:MouseEvent):void {
            stopDrag();
        }
    }
}

答案 3 :(得分:0)

我知道这是一个老问题,但有一个重要的方面没有得到解决......

您是在引用声明为“图形”的库符号(而不是MovieClip或Button)吗?

如果您指的是“图形”库符号的概念,那么您不能。图形可以被认为是一个美化的“群体”,主要区别在于图形存在于图书馆而图书馆则不存在。像一个组,一个Graphic允许你在一个“容器”中收集不同的项目并在.fla中操作它们,但它实际上并不作为已发布的swf中的编程构造存在...所以你不能添加脚本或命令到图形,因为就闪存播放器而言没有图形。

作为实验,您可以在库中创建一个movieclip符号,然后创建另一个库项目,该项目是包含movieclip的图形。将这两个放在空fla的第1帧上,使用以下代码:

for(var i:int = 0 ; ilen:int = this.numChildren ; i < ilen ; i++){
    trace(this.getChildAt(i));
}

请注意,这两个孩子都是你的MovieClip ......图形无处可寻。这就是您无法向Graphic添加任何脚本的原因。

那么你能做些什么来解决这个问题呢?

如果您绝对需要该符号作为库中的Graphic,并且您绝对需要能够将其作为一个整体拖放(或对其执行任何其他操作),那么您需要将其放在MovieClip中容器,然后拖放MovieClip。