Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在AS3中拖动和克隆MovieClip_Actionscript 3_Flash Cs5 - Fatal编程技术网

Actionscript 3 在AS3中拖动和克隆MovieClip

Actionscript 3 在AS3中拖动和克隆MovieClip,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,我有一个工具栏,在窗口的左边有一些汽车,我想点击一个元素并把它拖到黑板上创建一个克隆,但我做不到 我的应用程序如下所示: 左边的车是我想要的 我的源代码是: public class Car extends MovieClip { // imports... var newcar:Car; public function Car(){ addListeners(); } pr

我有一个工具栏,在窗口的左边有一些汽车,我想点击一个元素并把它拖到黑板上创建一个克隆,但我做不到

我的应用程序如下所示:

左边的车是我想要的

我的源代码是:

public class Car extends MovieClip
    {

        // imports...

        var newcar:Car;

        public function Car(){
            addListeners();
        }

        private function addListeners():void{
            this.addEventListener(MouseEvent.MOUSE_DOWN,clone);
        }

        private function clone(e:MouseEvent):void{
            // Clone the object
            newcar = new dibujo();
            newcar.graphics.copyFrom(this.graphics);
            newcar.x = this.x;
            this.parent.addChild(newcar);

                    // Asign new events to recently created mc
            newcar.addEventListener(MouseEvent.MOUSE_OVER,dragCar);
            newcar.addEventListener(MouseEvent.MOUSE_UP,dropCar);
        }

        private function dragCar(e:MouseEvent):void{
            this.startDrag();
        }

        private function dropCar(e:MouseEvent):void{
            this.stopDrag();
        }

    }
红色汽车和卡车使用我自己的基本类“汽车”

提前谢谢!我希望有人能帮我。

还有什么不起作用? 我看到的主要问题是,您创建了一辆新车,但没有将其添加到显示列表中。在克隆函数中,您需要

this.parent.addChild(newcar);
编辑: 正如我在评论中所说的,问题是,tah属性图形是只读的,所以您不能更改它。 如果您的车是扩展您的车的类的Instance(如果不是,您可以轻松地制作),您可以使用: 替换

这将最终使它发挥作用。 然后,您将遇到拖动的问题-它永远不会停止。但解决方案很简单,请将这一行添加到stopDrag函数:

e.target.removeEventListener(MouseEvent.MOUSE_MOVE, dragCar);

我试过你的建议,但也没用。不管怎样,我追踪了
这个.parent.numChildren
,每次点击原车都会增加。所以,问题可能与拖放功能有关:\您是否设置了新车的y坐标?和你设定x的方式一样。是的,也不起作用。也许电影唇是被创造出来的,但是上面有任何图形。但仍然不知道为什么。奇怪的是,我只是测试了一下,并在场景中添加了新的对象,效果非常好。只是拖拽的问题是可以解决的,但即使是现在,我在我的案例中看到了新车哦,我明白了!图形是只读属性,所以不能像这样复制它,很遗憾我有解决方案的想法,我会尝试一下,然后我会更新我的答案
newcar = new e.target.constructor;
e.target.removeEventListener(MouseEvent.MOUSE_MOVE, dragCar);