Comunidad de diseño web y desarrollo en internet online

Campo texto de XML visible/no visible

Citar            
MensajeEscrito el 16 Nov 2009 02:29 pm
Hola, a ver si alguien me puede ayudar. Tengo un flash que coge de un XML las rutas de unas imagenes y un texto correspondiente. Se muestra correctamente todo excepto que quiero que de inicio el texto no sea visible y que sólo se visualize al pasar por encima del holder_mc. He puesto la linia _root.holder_mc["my_txt" + i]._visible = false; en holder_mc.onRollOver pero no lo hace bien. Alguien sabe que esta mal. Añado codigo completo de AS y XML. Gracias.

Código ActionScript :

// -- posición donde se cargará la primera imagen
x = 0;
y = 0;
// -- ancho y alto de la imagen más 5 pixeles de espacio
ancho = 68;
alto = 68;
// -- numero de columnas
num_columnas = 10;
// -- creo un nuevo objeto XML
miXML = new XML();
// -- ignorar espacios 
miXML.ignoreWhite = true;
// -- proceso si la carga tuvo éxito
miXML.onLoad = function(succes) {
if (succes) {
// -- por cada nodo hijo del nodo principal...
for (var i = 0; i < this.firstChild.childNodes.length; i++) {
// -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
thumb = this.firstChild.childNodes[i].attributes.id;
// -- creo un clip de película vacio 
holder_mc = createEmptyMovieClip("holder_mc" + i, i + 100);
// -- creo un clip de película vacio 
item = holder_mc.createEmptyMovieClip("diapo" + i, i + 100);
// texto dinamico
_root.holder_mc.createTextField("my_txt"+i, 1, 0, 25, 68, 20);
_root.holder_mc["my_txt" + i].text = this.firstChild.childNodes[i].attributes.nom;
_root.holder_mc["my_txt" + i].wordWrap = true;
var my_fmt:TextFormat = new TextFormat();
my_fmt.align = "center";
my_fmt.font = "Arial";
my_fmt.size = 11;
_root.holder_mc["my_txt" + i].setTextFormat(my_fmt);
_root.holder_mc["my_txt" + i]._visible = false;
item.loadMovie(thumb);      
// -- indico posición x - y
holder_mc._x = x;
holder_mc._y = y;
// -- se crea una variable que contiene la url correspondiente
holder_mc.url = this.firstChild.childNodes[i].attributes.url;
// -- abrir url al hacer clic
holder_mc.onRelease = function() {
getURL(this.url);
};
holder_mc.onRollOver = function (){
this._alpha = 20;
_root.holder_mc["my_txt" + i]._visible = false;
};
holder_mc.onRollOut = function (){
this._alpha = 100;
};
// -- incremento el valor de x para la siguiente imágen
x += ancho;
// -- incremento en 1 el número de columnas
columna += 1;
// -- ruptura de control, control de número de columnas
if (columna == num_columnas) {
columna = 0;
x -= (ancho * num_columnas);
y += alto;
}
}
}
};
// -- cargar XML
miXML.load("productos.xml");


Código XML :

<?xml version="1.0" encoding="iso-8859-1"?>
<imagenes>
<imagen id="imagenes-productos/1.jpg" url="http://www.sitiowebprimero.com" nom="productoprimero"/>
<imagen id="imagenes-productos/2.jpg" url="http://www.sitiowebsegundo.com" nom="productosegundo"/>
</imagenes>

Por fviaplana

32 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Nov 2009 02:37 pm
Sería algo así:

Código ActionScript :

holder_mc.nr = i
holder_mc.onRollOver = function (){ 
 this._alpha = 20; //
 this["my_txt" + this.nr]._visible = false; 
}; 
holder_mc.onRollOut = function (){ 
  this._alpha = 100; 
 this["my_txt" + this.nr]._visible = true; 
}; 


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos



Ultima edición por solisarg el 16 Nov 2009 03:05 pm, editado 1 vez

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2009 02:45 pm
Hola, lo prove y no hace la acción. Puede ser que this["my_txt" + this.nr]._visible = true; no sea correcto y deba ser _root.holder_mc["my_txt" + this.nr]._visible = true; o bien _root["holder_mc" + this.nr]["my_txt" + this.nr]._visible = true; ?
Gracias por tu ayuda

Por fviaplana

32 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Nov 2009 02:49 pm
Dado que el callback está sobre holder_mc, hacer _root.holder_mc está de más.
Lo que está mal es esto:

Código ActionScript :

_root.holder_mc.createTextField("my_txt"+i, 1, 0, 25, 68, 20); 
_root.holder_mc["my_txt" + i].text = this.firstChild.childNodes[i].attributes.nom; 
_root.holder_mc["my_txt" + i].wordWrap = true; 


No debería tener _root en ninguno de los casos, pues sino no está haciendo referencia al holder que acabas de crear

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2009 02:58 pm
Hola, quite el '_root' de dónde comentaste y el texto sigue sin aparecer al pasar por encima del MC. Sabes que puede pasar mas? Gracias por tu ayuda.

Por fviaplana

32 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Nov 2009 03:01 pm
Ahora empieza a trazar, por ejemplo:

Código ActionScript :

holder_mc.onRollOver = function (){  
 this._alpha = 20; // 
  trace("Busco my_txt" + this.nr+" que es "+ this["my_txt" + this.nr])
 this["my_txt" + this.nr]._visible = false;  
};  


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2009 03:04 pm
Es que no me sale ningun valor. Me salio:

Busco my_txt que es
Busco my_txt que es
Busco my_txt que es
Busco my_txt que es

Por fviaplana

32 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Nov 2009 03:06 pm
Me equivoqué en el nombre de instancia, ya lo corregí, es

holder_mc.nr = i

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2009 03:07 pm
Ok, ahora perfecto. Muchas gracias por tu ayuda.

Por fviaplana

32 de clabLevel



 

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.