Я пытаюсь использовать бесконечный свиток AS3, который я обсуждаю в этом ТАКОМ вопросе . Я разрабатываю это с помощью FlashCS5 IDE.
Абсолютно последнее, что мне нужно сделать, это загрузить большое фоновое изображение ("header_bg_vert.jpg") извне после загрузки остальной части фильма, вместо того, чтобы требовать полной загрузки анимации заранее (или предварительной загрузки заголовка анимация в).
Мой AS3 ниже. «Бесконечный цикл» работает, помещая две копии одного и того же бесшовного изображения вплотную, затем перемещая второе изображение вперед, после того как оно прокручивается за пределы экрана - в настоящее время этот код отображает только одну копию изображения. Что с этим не так? Кроме того, это лучший способ сделать это?
Большое спасибо.
stop();
//load the bg image
var request:URLRequest = new URLRequest("header_bg_vert.jpg");
var s1:Loader = new Loader();
var s2:Loader = new Loader();
s1.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
s1.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
s2.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
s2.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
function loadProgress(event:ProgressEvent):void {
var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
percentLoaded = Math.round(percentLoaded * 100);
trace("Loading: "+percentLoaded+"%");
}
function loadComplete(event:Event):void {
trace("Complete");
}
s1.load(request);
s2.load(request);
//The speed of the scroll movement.
var scrollSpeed:uint = 1;
//Originally, this added two instances of the movie clip onto the stage.
//var s1:ScrollBg = new ScrollBg();
//var s2:ScrollBg = new ScrollBg();
addChild(s1);
addChild(s2);
setChildIndex(s1, 0);
setChildIndex(s2, 0);
//This positions the second movieclip next to the first one.
s1.y = 0;
s2.y = s1.height;
//Adds an event listener to the stage.
stage.addEventListener(Event.ENTER_FRAME, moveScroll);
//This function moves both the images to left. If the first and second
//images goes pass the left stage boundary then it gets moved to
//the other side of the stage.
function moveScroll(e:Event):void{
s1.y -= scrollSpeed;
s2.y -= scrollSpeed;
if(s1.y <= -s1.height){
s1.y = s1.height - scrollSpeed;
}else if(s2.y <= -s2.height){
s2.y = s2.height - scrollSpeed;
}
}