Salve a tutti, vorrei realizzare un background in movimento composto da una serie di movieclip che facciano da texture ripetuta di sfondo, in continuo movimento orizzontale sull'asse X.
Ho creato un MC contenitore istanziandolo come 'corridoio' e al suo interno ho piazzato un MC istanziato come 'bg_pattern', alto come lo stage ma stretto circa un quinto (occupa tutta l'altezza dello stage, mentre in larghezza ne entrano 5).
Ho pensato che, per ottenere l'effetto scorrimento verso sinistra in loop, dovrei seguire questa procedura:
1-duplicare il MC pattern per tutta la lunghezza dello stage;
2- mettere in movimento ogni singolo pezzetto del pattern, verso sinistra;
3- far loopare l'animaizone facendo sì che, quando un singolo pezzetto esce totalmente dallo schermo a sinistra, venga riposizionato all'estremità destra dello stage.
Ho scritto questo codice per ora, ma i pezzi del pattern vengono riposizionati a destra dello stage solo per una volta. Al secondo passaggio non subiscono più la condizione del looping: qualche idea in proposito?
Codice PHP:
import mx.transitions.Tween;
import mx.transitions.easing.*;
/* corridord scrolling */
var speed = 8;
var pattern_width = 0;
var pattern_count = 0;
function corridor_scrolling(){
/* replicate pattern */
while (pattern_width<(Stage.width+_root.corridor.bg_pattern._width)){
duplicatemovieclip(_root.corridor.bg_pattern, "bg_pattern"+pattern_count, pattern_count);
_root.corridor["bg_pattern"+pattern_count]._x = pattern_width;
_root.corridor["bg_pattern"+pattern_count]._y = 0;
pattern_count++;
pattern_width = _root.corridor.bg_pattern._width*pattern_count;
}
/* movement */
corridor.onEnterFrame = function(){
/* reiterate control for pattern pieces */
for (i=0; i<pattern_count; i++) {
/* movement speed */
//_root.corridor["bg_pattern"+i]._x -= speed;
new mx.transitions.Tween(_root.corridor["bg_pattern"+i], "_x", mx.transitions.easing.None.easeNone, _root.corridor["bg_pattern"+i]._x, _root.corridor["bg_pattern"+i]._x-speed, 0.0001, true);
/* movement loop */
if(_root.corridor["bg_pattern"+i]._x<=-_root.corridor["bg_pattern"+i]._width){
_root.corridor["bg_pattern"+i]._x += pattern_width;
}
}
}
}
corridor_scrolling();