如何使图形符号在FLASH中可拖动?

如何使图形符号在FLASH中可拖动?,flash,actionscript,Flash,Actionscript,您能告诉我这样一个作业的actionscript代码是什么样子的吗?您使用StartDrag()和StopDrag() 您是指形状类对象还是图形类对象?Shape类是从DisplayObject派生的,所以对此没有交互支持,并且不能实例化图形类对象。为了使某些东西成为可拖动的山墙,需要将图形放在一些Sprite对象中。这里有一种方法: 创建一个名为“圆”的电影唇。右键单击库中的符号,选择属性>选中“链接”框,然后选择“导出Actionscript”。将该类命名为“圆圈”。您可以使用flash.d

您能告诉我这样一个作业的actionscript代码是什么样子的吗?

您使用StartDrag()和StopDrag()


您是指形状类对象还是图形类对象?Shape类是从DisplayObject派生的,所以对此没有交互支持,并且不能实例化图形类对象。为了使某些东西成为可拖动的山墙,需要将图形放在一些Sprite对象中。

这里有一种方法:

创建一个名为“圆”的电影唇。右键单击库中的符号,选择属性>选中“链接”框,然后选择“导出Actionscript”。将该类命名为“圆圈”。您可以使用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();
        }
    }
}

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

您指的是声明为“图形”的库符号(与MovieClip或按钮相对)

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

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

for(var i:int = 0 ; ilen:int = this.numChildren ; i < ilen ; i++){
    trace(this.getChildAt(i));
}
for(变量i:int=0;ilen:int=this.numChildren;i
注意,两个孩子都是你的电影唇。。。这张图到处都找不到。这就是为什么不能将任何脚本添加到图形中

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

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