Estoy realizando una marquesina que muestre las noticias de forma horizontal. El efecto que consigo es mover la marquesina através del evento ENTERFRAME de la movie pero parpadea y cansa la vista despues de cierto tiempo. Quiero darle efecto de deslizar y no de cambiar la coordenada X. Como puedo hacerlo?
El codigo a continuacion muestra la carga de los campos de texto de noticias en la movie de la marquesina:
Código :
import fl.containers.UILoader;
import fl.events.*;
import flash.xml.*;
import flash.display.MovieClip;
var sheet:StyleSheet = new StyleSheet();
llamaCSS("noticias.css");
function llamaCSS(archivo:String):void
{
var cargaDatosCSS:URLLoader = new URLLoader();
cargaDatosCSS.load(new URLRequest(archivo));
cargaDatosCSS.addEventListener(Event.COMPLETE, manejadorCargaCSS);
}
function manejadorCargaCSS(event:Event):void {
sheet.parseCSS(event.currentTarget.data);
llamaXML("noticias.xml");
}
function llamaXML(archivo:String):void
{
var cargaDatosXML:URLLoader = new URLLoader();
cargaDatosXML.load(new URLRequest(archivo));
cargaDatosXML.addEventListener(Event.COMPLETE, ManejadorCargaXML);
}
function ManejadorCargaXML(eventObj:Event):void {
var cargaXML= new XML(eventObj.currentTarget.data).elements("*");
var i:int = 1;
var posicion:Number = 0;
var m:Number = 0;
for each (var prop:XML in cargaXML) {
var vnData:XML = prop;
//trace(vnData.toXMLString());
var caja:MovieClip = new MovieClip();
var addcadena:String = "<h1>" + vnData.@titulo + "</h1>" +
"<p><span class='noticia'>" +
vnData.@noticia + " </span></p>";
var t:TextField= new TextField();
t.styleSheet = sheet;
t.text = addcadena;
t.autoSize = TextFieldAutoSize.LEFT;
m = t.textWidth;
caja.addChild(t);
caja.y = 0;
caja.x = posicion;
trace("posicion Caja: ", posicion);
posicion += caja.width + 30;
caja.name = "caja" + i;
addChild(caja);
i++;
}
}Ahora en el Stage, hago que la marquesina se mueva:
Código :
import fl.events.*;
//import flash.display.MovieClip;
var posicion_actual:Number = stage.width;
var se_mueve:Boolean = true;
marquesina.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
marquesina.addEventListener(MouseEvent.ROLL_OVER , mouseRollOverHandler);
marquesina.addEventListener(MouseEvent.ROLL_OUT , mouseRollOutHandler);
function enterFrameHandler(event:Event):void {
posicion_actual = marquesina.x;
if (se_mueve == true) {
marquesina.x-=1;
} else {
marquesina.x = posicion_actual;
}
if (marquesina.x<=0-marquesina.width) {
marquesina.x = 850; // ancho del stage
}
}
function mouseRollOverHandler(event:Event):void {
se_mueve = false;
}
function mouseRollOutHandler(event:Event):void {
se_mueve = true;
}Este código funciona perfectamente. El problema es que el efecto producido es un movimiento tembloroso y quiero más bien que se deslice suavemente y que permita leer las noticias como los applet de java....
Saludos
