Я очень новичок в AS3 & Flash и интересно, может ли кто-нибудь взглянуть на этот образец теста.AS3 Динамическая загрузка и автопрокрутка Случайный размер Movieclips
Внутри моего 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
}
}
Большое спасибо за ваш вход mitim, я дам вашим идеям вихрь и посмотрю, как далеко я смогу прогрессировать. – Attila66
кричит, я просто перечитываю ваш вопрос, и я думал, что ваши регистрационные баллы были сверху слева. Используется одна и та же логика, но для нового клипа изменение - до 0, а для проверки того, что клип выключен, y будет равно (или больше) высоты сцены + высоты объекта. – mitim
Добавили проверки, чтобы определить, когда полная высота mc видна и «на сцене», и когда полная высота mc невидима и «выключена», и обе работают правильно. Я также добавил удаление дочернего оператора, так что, когда mc стал невидимым и неактивным, он удаляется со сцены и возвращается в библиотеку. Это работает в визуальном плане (т. Е. Mc исчезает со сцены), однако, согласно результатам вывода, mc (хотя и не видимый) все еще присутствует и перемещается все дальше за пределы видимой стадии. – Attila66