как создать бесконечную анимацию прокрутки в action script3

я создаю аквариум.. так что я хочу сделать, чтобы моя рыба была бесконечной прокруткой.. я использую сценарий действия 3.. это код, который я использовал.. но он не работает..

var scrollSpeed:uint = 5;

//This adds two instances of the movie clip onto the stage.



//This positions the second movieclip next to the first one.
f1.x = 0;
f2.x = f1.width;

//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{
f1.x -= scrollSpeed;  
f2.x -= scrollSpeed;  

if(f1.x < +f1.width){
f1.x = f1.width;
}else if(f2.x < +f2.width){
f2.x = f2.width;
}
}

f1 и f2 — это имя моего экземпляра рыбы


person jlock    schedule 08.07.2013    source источник
comment
Я немного запутался, вы хотите переместить рыбу на противоположную сторону экрана после того, как она уйдет с одной стороны?   -  person Glitcher    schedule 08.07.2013


Ответы (2)


Ваши проблемные строки находятся внизу.

if (f1.x < f1.width) {
    f1.x = stage.stageWidth - f1.width // f1.width;
} // Removed else

if (f2.x < f2.width) {
    f2.x = f1.width;
}
person Pranav Negandhi    schedule 08.07.2013

это предполагает, что ваши изображения/MC достаточно велики для экрана и являются дубликатами (имеют одинаковый контент)

function moveScroll(e:Event):void {
    //position fish 1
    f1.x -= scrollSpeed;
    //when fish 1 is out of bounds (off the screen on the left, set it back to 0
    if (f1.x < -f1.width) {
       f1.x = 0;
    }
    //always position fish2 next to fish 1
    f2.x = f1.x + f1.width;
}

другим способом было бы поместить их в массив и переключить их, если они не имеют одинакового содержимого:

//add fishes to array
var images:Array = new Array();
images.push(f1, f2);

function moveScroll(e:Event):void {
    //position fish 1
    images[0].x -= scrollSpeed;
    //when first fish is out of bounds, remove it from the array (unshift) and add it at the end (push)
    if (images[0].x < -images[0].width) {
       images.push(images.unshift())
    }
    //always position fish2 next to fish 1
    images[1].x = images[0].x + images[0].width;
}

это только основные примеры, но вы поняли идею

person Marijn    schedule 08.07.2013