0

我对 AS3 和 Flash 非常陌生,想知道是否有人可以看看这个测试片。

在我的 Flash 文件中,我有一些在按下按钮时随机动态添加到舞台的影片剪辑。所有影片剪辑的宽度相同但高度不同,并且所有影片剪辑的注册点都位于左下角(我在此阶段使用该按钮仅用于测试目的)。

我想要做的是“自动”(而不是使用按钮)从库中将无穷无尽的随机选择的 mc 添加到舞台(也就是说 mc 应该连续添加 - 即一个接一个没有每个之间的间隙)自动从舞台顶部垂直向下滚动到底部(以永无止境的传送带的方式),然后当它们在舞台上不再可见时返回到图书馆。

有人有想法么。

//mc's are dynamically loaded & returned to the library
//mc's have 'export for Actionscript' property
//mc's have their anchor point placed bottom left

//stop all
stop();

//Speed of the vertical auto-scroll movement
var scrollSpeed:uint = 1;

//auto load random mc from library & place top left corner of stage

//load random mc via button for test purposes
McButton.addEventListener(MouseEvent.CLICK,attachMovieclip);
function attachMovieclip(event:MouseEvent):void{

//create a random number for choosing a mc from the array
var newNumber:int = (Math.random ()*14)

//define the mc's
var mc1:Red01 = new Red01();
var mc2:Red02 = new Red02();
var mc3:Red03 = new Red03();
var mc4:Orange01 = new Orange01();
var mc5:Orange02 = new Orange02();
var mc6:Orange03 = new Orange03();
var mc7:Yellow01 = new Yellow01();
var mc8:Yellow02 = new Yellow02();
var mc9:Green01 = new Green01();
var mc10:Green02 = new Green02();
var mc11:Blue01 = new Blue01();
var mc12:Blue02 = new Blue02();
var mc13:Purple01 = new Purple01();
var mc14:Purple02 = new Purple02();

//create an array which holds all the mc's
var Mcarray:Array = newArray(mc1,mc2,mc3,mc4,mc5,mc6,mc7,mc8,mc9,mc10,mc11,mc12,mc13,mc14);

//add child (or random mc) to the stage
addChild(Mcarray[newNumber]);

//place mc at specific starting point coordinate - i.e. top of the stage
Mcarray[newNumber].x=0
Mcarray[newNumber].y=0

//trace mc random numeric value for test purposes
trace(newNumber);

//auto-scroll the randomly chosen mc vertically down the stage
stage.addEventListener(Event.ENTER_FRAME, moveScroll);
function moveScroll(e:Event):void{
Mcarray[newNumber].y += scrollSpeed;

//once first mc is completley on stage load the next random mc

//once a mc has completely left the bottom of the stage return it to the library
}
}
4

2 回答 2

0

离开我的头顶,所以它可能有点粗糙,但是......

从第一个剪辑开始并将其存储在“onscreenClips”数组中(将像队列一样使用):

1.) 将“onscreenClips”中的起始剪辑设置为 y = -height 这会将剪辑的底部与舞台顶部对齐。

然后在您的输入帧循环中:

1.) 将“onscreenClips”中的任何剪辑向下移动

2.) 检查“onscreenClips”中的第一个对象是否已经到达底部(y 属性将等于舞台高度)。如果是这样,请将其从显示中删除(因为它现在会在屏幕外)并从队列中删除。第一个对象始终是队列中“最旧的”。

3.) 检查“onscreenClips”中的最后一个对象是否已经到达舞台顶部(y 属性已达到 0,不再为负数)。这意味着顶部边缘与舞台顶部对齐,如果再向下移动,就会有间隙。如果发生这种情况,则在 y = -height 处添加下一个剪辑集,然后将其推送到队列中。

4.) 继续,直到不再添加对象。然后继续检查第 2 步的条件,直到“onscreenClips”数组/队列为空。

于 2013-05-02T06:05:14.890 回答
0

设法在这个方面取得了进一步的进展。

添加了检查以确定 mc 的全高何时可见和“在舞台上”,以及 mc 的全高何时不可见和“舞台外”并且两者都正常运行。

我还添加了一个 remove child 语句,这样当 mc 变得不可见且不在舞台上时,它就会从舞台上移除并返回到库中。这在视觉方面有效(即 mc 确实从舞台上消失了)但是,根据输出结果,mc(尽管不可见)似乎仍然存在并且越过可见舞台限制。

于 2013-05-04T03:58:07.510 回答