Flash:调整此代码以保留复制的电影剪辑

Flash:调整此代码以保留复制的电影剪辑,flash,actionscript,adobe,Flash,Actionscript,Adobe,好的,这是我的代码 ham_mc.onPress=function(){ startDrag(this); } ham_mc.onRelease=ham_mc.onReleaseOutside=function(){ stopDrag(); _root.ham_mc.duplicateMovieClip("ham_mc" + "x",2); x++; } 用户可以首先拖动电影剪辑。释放后,duplicateMovieClip命令将运行,将新的ham电影剪辑保留在第一个剪辑拖动到的位置 问题:当

好的,这是我的代码

ham_mc.onPress=function(){
startDrag(this);
}
ham_mc.onRelease=ham_mc.onReleaseOutside=function(){
stopDrag();
_root.ham_mc.duplicateMovieClip("ham_mc" + "x",2);
x++;
}
用户可以首先拖动电影剪辑。释放后,duplicateMovieClip命令将运行,将新的ham电影剪辑保留在第一个剪辑拖动到的位置

问题:当我再次单击并拖动第一个火腿电影时,duplicateMovieClip会再次运行,但会替换先前生成的电影剪辑

我添加了x和x++,试图每次给电影剪辑副本起一个不同的名字,但这并不能解决这个问题


如何更改此代码,以便每次都创建一个新的ham_mc,而不是覆盖旧的ham_mc。我累了,抱歉解释得不好

这不是名称,而是加载深度(2)。尝试用x替换2,它应该适合您:

ham_mc.onPress=function(){
startDrag(this);
}
ham_mc.onRelease=ham_mc.onReleaseOutside=function(){
stopDrag();
_root.ham_mc.duplicateMovieClip("ham_mc" + x ,x);
_root['ham_mc' + x]._x = 50;
_root['ham_mc' + x]._y = 50;
x++;
}
在相同深度加载剪辑将始终替换以前在该深度加载的剪辑


编辑和测试:)

德米安的答案是正确的,但前提是你的x计数与舞台上的电影唇总数相符。此外,所有剪辑都设置为相同的X和Y位置。这应该更好地发挥作用:

ham_mc.onPress=function(){
    startDrag(this);
}
ham_mc.onRelease=ham_mc.onReleaseOutside=function(){
    stopDrag();
    _root.ham_mc.duplicateMovieClip("ham_mc" + x ,_root.getNextHighestDepth());
    _root['ham_mc' + x]._x = _root._xmouse;
    _root['ham_mc' + x]._y = _root._ymouse;
    x++;
}

编辑了我的帖子并进行了测试:)我使用的是flash pro 8。该代码没有改变任何东西。不幸的是,旧的图像没有留在屏幕上。我可以用你的。fla:PAll图像被设置到相同的位置(50,50),也许这就是问题所在。。。另外:尝试使用
\u root.getNextHighestDepth()
作为duplicateMovieClip的第二个参数。谢谢,是的,我将50,50部分调整为鼠标释放位置的XY。eltraumpirat做得很好,duplicateMovieClip的第二部分希望是_root.getNextHighestDepth(),谢谢!