我在窗口左侧有一个带有一些汽车的工具栏,我想点击一个元素并将其拖到电路板上创建它的克隆,但我不能这样做。
我的应用看起来像这样:
左边的汽车是我想要拖的。
我的源代码是:
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();
}
}
红色汽车和卡车使用我自己的基本类“汽车”。
提前致谢!我希望有人可以帮助我。
答案 0 :(得分:1)
什么不起作用? 我看到的主要问题是,您创建新车,但不将其添加到显示列表中。在你的克隆功能中,你需要像
这样的东西this.parent.addChild(newcar);
编辑: 正如我在评论中所说,问题是,属性图形是只读的,所以你不能改变它。 如果你的汽车是扩展你的汽车的类(如果不是,你可以很容易地制造它们),你可以使用这个: 取代
newcar = new dibujo(); //I think you menat new Car() here
与
newcar = new e.target.constructor;
这应该最终使它工作。 然后你会遇到拖动问题 - 它永远不会停止。但解决方案很简单,将此行添加到stopDrag函数中:
e.target.removeEventListener(MouseEvent.MOUSE_MOVE, dragCar);