想将代码actionscript 2更改为actionscript 3吗?

时间:2013-09-02 11:10:58

标签: actionscript-3 flash actionscript

我是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();

}

2 个答案:

答案 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(在图书馆面板中):

enter image description here

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();
}