我是flash.i的新手需要将下面的actionscript代码更改为actionscript 3.0代码。 我目前正在进行拖放工作。所以我想复制动画片段,同时拖动我在互联网上找到代码,但它是动作脚本2.0所以请将其转换为as3。 框是动画片段的实例名称。 代码块是:
var num:Number = 0
box.onPress = function(){
num++
duplicateMovieClip(box ,"box"+num, _root.getNextHighestDepth())
_root["box"+num].startDrag();
}
box.onReleaseOutside = function(){
trace(_root["box"+num])
stopDrag();
}
答案 0 :(得分:1)
不幸的是,AS3中没有duplicateMovieClip模拟,所以你必须为你的box movieClip模板创建一个Class。让我们说它将被称为BoxTemplate。 (您可以谷歌如何为您的库对象创建类)。添加具有此名称的Class并添加此代码(构造函数中的事件订阅和私有事件侦听器)。你会得到这样的东西:
package
{
public class BoxTemplate
{
public function BoxTemplate()
{
addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
}
private function onMouseUp(e:MouseEvent):void
{
stopDrag();
}
}
将此符号的当前实例保留在舞台上。这是您在框架中的代码:
import flash.event.MouseEvent
box.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void
{
var newBox:BoxTemplate = new BoxTemplate();
newBox.x = e.target.x;
newBox.y = e.target.y;
addChild(newBox);
newBox.startDrag();
}
它将允许您无限地克隆您的盒子。当然,您可以在数组中添加所有这些以保留引用。
答案 1 :(得分:1)
如果您不想使用单独的.as文件,请按照以下步骤操作:
1-将AS linkage
分配给boxClip(在图书馆面板中):
2-选择时间轴上的第1帧,并将此代码粘贴到“动作”面板中:
var boxes:Array=[];
//var box:Box=new Box();
//addChild(box);
box.addEventListener(MouseEvent.MOUSE_DOWN,generateBox);
function generateBox(e:MouseEvent):void{
var newBox:Box=new Box();
newBox.x = e.target.x;
newBox.y = e.target.y;
newBox.startDrag();
newBox.addEventListener(MouseEvent.MOUSE_UP,stopD);
newBox.addEventListener(MouseEvent.MOUSE_DOWN,startD);
boxes.push(newBox);
addChild(newBox);
}
function startD(e:MouseEvent):void{
e.target.startDrag();
}
function stopD(e:MouseEvent):void{
e.target.stopDrag();
}