每次前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
答案 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);
}
}
}
}