2013-12-07 4 views
0

Im пытается создать вертикальную форму (в этом случае 5) элементов каждый раз, когда предыдущие 5 прошли центр сцены. Но что я делаю для каждого элемента, который прошел центр, я создаю 5 новых. Итак, в 1-й момент у меня есть 1 элемент.Как создать вертикальную линию элементов

, когда он проходит через центр у меня есть 5

, когда они проходят центр у меня есть 5 для каждого из тех, 5 (делает в общей сложности 25) , но они имеют один и тот же X и Y позиции, и они над стек и выглядеть как есть только 5 новый

, когда они проходят в центре у меня есть 5 для каждого из тех 25 (делает намного больше, чем то, что я хочу (и я хочу только 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

Вам просто нужно дать только один объект в столбце позволяет создать новый столбец. Вы можете сделать это следующим образом:

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); 
    } 
} 
} 
} 
Смежные вопросы