Actionscript 3 如何仅在上一个已上台后创建元素

Actionscript 3 如何仅在上一个已上台后创建元素,actionscript-3,Actionscript 3,如何仅在前一个元素通过阶段后添加新元素。stageWidth/2 除了我的方式(下面的代码,我创建了一个元素只通过一次的区域) PS:我不想这样做,因为运动的速度在时间上是不同的(它会慢慢地上升和下降)。以0.005的缓和系数从3变为6 到目前为止,我有这个 import flash.display.MovieClip; import flash.events.Event; public class Main extends MovieClip { private var myArr

如何仅在前一个元素通过阶段后添加新元素。stageWidth/2

除了我的方式(下面的代码,我创建了一个元素只通过一次的区域)

PS:我不想这样做,因为运动的速度在时间上是不同的(它会慢慢地上升和下降)。以0.005的缓和系数从3变为6

到目前为止,我有这个

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

public class Main extends MovieClip
{

    private var myArray:Array = new Array();

    public function Main()
    {
        stage.addEventListener(Event.ENTER_FRAME, everyFrame)
        var item:Box = new Box();
        item.x = stage.stageWidth - 100
        item.y = 40
        addChild(item)
        myArray.push(item)
    }

    private function everyFrame(ev:Event):void
    {
        var myBox:Box
        for(var i:int = 0; i< myArray.length; i++)
        {
            myBox = myArray[i]
            myBox.x -=3
            if(myBox.x <= stage.stageWidth/2 && myBox.x >= stage.stageWidth/2 - 3)
            {
                trace("new Box")
                var myNewBox:Box = new Box()
                myNewBox.x = stage.stageWidth - 100
                myNewBox.y = 40
                addChild(myNewBox)
                myArray.push(myNewBox)
            }

            if(myBox.x < 0 )
            {
                removeChild(myBox)
                myArray.splice(i, 1)
                trace(myArray.length)
            }               
        }
    }

}
导入flash.display.MovieClip;
导入flash.events.Event;
公共类Main扩展了MovieClip
{
私有变量myArray:Array=newarray();
公共功能Main()
{
stage.addEventListener(Event.ENTER_FRAME,everyFrame)
变量项:Box=newbox();
项目x=阶段宽度-100
项目y=40
addChild(项目)
myArray.push(项目)
}
私有函数everyFrame(ev:事件):无效
{
var myBox:Box
for(变量i:int=0;i
您的代码已在运行,并按要求执行操作。 代码看起来像文档类,但有一个小错误阻止了它的执行。您忘记了
package{…}
wrap。 但是你应该告诉我,不是吗

您是对的,使用范围可能会给您带来一大堆问题,而对象没有进入范围,或者多次进入范围。
要解决这个问题,你不能选中区域,而只能选择
myBox.x:D。我知道。但是在这里(在显示的代码中),我通过检测项目.x是否在该区域->在myBox.x=stage.stageWidth/2-3之间来实现,我知道如果我增加myBox.x-=3,它将永远检测不到它。所以我粘贴了代码,这样我就可以准确地显示我在做什么,以及它的行为,但是询问是否有其他的方法,一种我不检查该区域的方法。哦,我明白了。现在,我会给我的答案添加一些建议。我确实认为这与布尔值有关,但我的尝试失败了,我尝试了,并用setInterval进行了尝试。但是,在您的评论之后,现在:D好吧,现在,即使这样也行了。现在唯一的问题是哪种方法更有效(从内存的角度来说)。更有效的方法是只检查可能满足条件的对象。使用这个布尔属性,您总是检查数组中的所有元素,即使您确定它们的一部分不是您的成员。您有n个数组访问和2n个if
检查。如果是2个数组,则仍然是n个数组访问,但如果检查,则只有n个。嗯,你说得有道理。最后,我想我会按照你的方式来做,谢谢
if(myBox.x <= stage.stageWidth/2 && !myBox.passedCenter){
    myBox.passedCenter=true;
    //you stuff
}