如何创建垂直线元素

时间:2013-12-07 01:50:13

标签: actionscript-3

每次前5个元素都通过舞台中心时,我试图创建一个像(在本例中为5个)元素的垂直元素。 但我正在做的是通过中心的每个元素我创建了5个新元素。 所以在第一刻我有1个元素。

当他通过中心的时候,我有5个

当他们通过中心时,我为这5个中的每一个都有5个(总共25个) 但他们有相同的X和Y位置,他们叠加,看起来只有5个新的

当他们通过中心的时候,我对这25个中的每一个都有5个(比我想要的要多得多(我只想要5个))他们也超过了堆栈

如何在新列中添加5?

到目前为止,我有这段代码:

import flash.display.MovieClip;
import flash.events.Event;


public class Main extends MovieClip
{

    private var myVertArray:Array = new Array();

    private var _box:Box = new Box();

    public function Main()
    {
        _box.x = stage.stageWidth - _box.width;
        _box.y = stage.stageHeight - 200;
        this.addChild(_box);
        myVertArray.push(_box);
        stage.addEventListener(Event.ENTER_FRAME, onEveryFrame);
    }

    private function onEveryFrame(ev:Event):void
    {
        var _myItem:Box
        for (var i:int = 0; i < myVertArray.length; i++)
        {
            _myItem = myVertArray[i]
            _myItem.x -= 3;

            if(_myItem.x < stage.stageWidth/2 && !_myItem.passedCenter )
            {
                trace("myVertArray.length is : " + myVertArray.length)
                _myItem.passedCenter = true
                for(var j:int = 0; j < 5; j++)
                {
                    var _myNewItem:Box = new Box();
                    _myNewItem.x = stage.stageWidth - 40;
                    _myNewItem.y = stage.stageHeight - (_myNewItem.height * j)  -  (j * 5) - _myNewItem.height /2 ;
                    _myNewItem.alpha = 0.2;
                    this.addChild(_myNewItem);
                    myVertArray.push(_myNewItem)
                }
            }
        }

        if(_myItem.x < 0)
        {
            removeChild(_myItem);
            myVertArray.splice(i, 1);
        }
    }

}

并且在 Box()类中只是一个简单的矩形movieClip,其中我也有

public var passedCenter:Boolean = false

1 个答案:

答案 0 :(得分:1)

您只需要在列功能中只提供一个对象来创建新列。你可以这样做

package{
import flash.display.MovieClip;
import flash.events.Event;
public class Main extends MovieClip{
    private var myVertArray:Array = new Array();
    private var _box:Box = new Box();

public function Main(){
    _box.x = stage.stageWidth - _box.width;
    _box.y = stage.stageHeight - 200;
    _box.columnMaker=true; //added property
    this.addChild(_box);
    myVertArray.push(_box);
    stage.addEventListener(Event.ENTER_FRAME, onEveryFrame);
}

private function onEveryFrame(ev:Event):void{
    var _myItem:Box
    for (var i:int = 0; i < myVertArray.length; i++){
        _myItem = myVertArray[i]
        _myItem.x -= 3;
        if(_myItem.x < stage.stageWidth/2 && !_myItem.passedCenter ){
            trace("myVertArray.length is : " + myVertArray.length)
            _myItem.passedCenter = true;
    if (_myItem.columnMaker) {//check added
        trace("createColumn");
        for(var j:int = 0; j < 5; j++){
            var _myNewItem:Box = new Box();
        _myNewItem.x = stage.stageWidth - 40;
        _myNewItem.y = stage.stageHeight - (_myNewItem.height * j)-
                                                 (j * 5) - _myNewItem.height /2;
        _myNewItem.alpha = 0.2;
        if (j==4) {
            _myNewItem.columnMaker=true;//give property to last object in
                                                    //columm
        }
        this.addChild(_myNewItem);
        myVertArray.push(_myNewItem);
        }
    }
        }
    }

    if(_myItem.x < 0){
        removeChild(_myItem);
        myVertArray.splice(i, 1);
    }
}
}
}