在Actionscript 3中复制MovieClip

时间:2014-03-10 13:06:36

标签: actionscript-3 duplicates

我的问题是如何做到这一点: https://www.dropbox.com/s/zi63y771h38a2vo/Example.fla

在Action Script 3.0中。

这是工作时间线源代码,带有现成的索引值+通过数组排序新闻。 这很简单,如何在ActionScript 3.0中创建相同的东西?

我在网站/论坛上搜索,但找不到令我满意的答案,所以我决定在这里创建一个帐户并寻求帮助。

如果有人可以在ActionScript 3.0上重新制作这个示例,这可以帮助我们所有人,因为我看到了很多关于duplicateMovieClip()函数的问题,但是没有严格的答案+示例,所以也许让我们创建它? / p>

这是我的建议,代码在文件中或在这里:

    stop();

    var IDMovieClip = 0;
    var IDarray = 0;
    var Duplicate:MovieClip;
    MC._visible = false;
    var ARRAY:Array = new Array();

    ENTER.onRelease = function() {
        Duplicate = MC.duplicateMovieClip(IDMovieClip, _root.getNextHighestDepth());

        var ref = eval(Duplicate);
        ref.ID = IDMovieClip;
        ref.sortedID = IDarray;

        _root[ref.ID].windowID.text = "ID: " + ref.ID;

        Duplicate.Close.onRollOver = function() {
            trace(_root[ref.ID]._target);
        };

        Duplicate.Close.onRelease = function() {
            _root.ARRAY.splice(_root[ref.ID].sortedID,1);
            removeMovieClip(_root[ref.ID]);
            IDarray -= 1;
            _root.doSort();
        };

        ARRAY.push([IDarray, IDMovieClip]);
        doSort();

        IDMovieClip += 1;
        IDarray += 1;
    };

    doSort = function () {
        for (var i = 0; i < ARRAY.length; i++) {
            _root[ARRAY[i][1]]._y = 10 + ((_root[ARRAY[i][1]]._height + 10) * i);
            _root[ARRAY[i][1]].sortID.text = i;
            _root[ARRAY[i][1]].sortedID = i;
            trace(ARRAY[i]);
        }
    };

FLA PROJECT DESIGN IN JPG (MovieClips/Placement etc)

(你需要运行它,如果你不想从我的DropBox下载它)

如果有人可以提供帮助,那就太棒了。

1 个答案:

答案 0 :(得分:0)

AS3中没有duplicateMovieClip,在ActionScript 3中,您实例化影片剪辑。我找不到所有使用变量的位置,我认为它是某个项目的一部分,所以你应该根据需要调整代码。您还应该阅读Export for ActionScript

//Container for your objects            
var movieHolder: Sprite = new Sprite();
var id:uint = 0;
const padding: int = 10;

//Handler, that will add new objects to the scene
enter.addEventListener(MouseEvent.CLICK, onClickEnter);

addChild(movieHolder);

movieHolder.x = movieHolder.y = padding;

function onClickClose(e:MouseEvent):void {
    movieHolder.removeChild(DisplayObject(e.currentTarget).parent);
    sortMovies();
}

function onClickEnter(e:MouseEvent):void {
    //Set up for MovieClip with form export for ActionScript
    var movie:MyFormMovie = new MyFormMovie();
    movie.windowID.text = "ID: " + id;
    movie.Close.addEventListener(MouseEvent.CLICK, onClickClose, false, 0, true);
    movieHolder.addChild(movie);
    sortMovies();
    id++;
}

function sortMovies():void {
    var i: uint, len: uint = movieHolder.numChildren, movie: MyFormMovie;
    var posY: uint;

    for(i; i < len; ++i){
        movie = movieHolder.getChildAt(i) as MyFormMovie;
        movie.y = posY;
        movie.sortID.text = i.toString();
        posY += movie.height + padding;
    }
}