Foros del Web » Creando para Internet » Flash y Actionscript »

swf transparente y ActiveX

Estas en el tema de swf transparente y ActiveX en el foro de Flash y Actionscript en Foros del Web. El otro dia hice una pregunta y nadie me contesto , creo que ya ha pasado un tiempo razonable de espera, por eso la vuelvo ...
  #1 (permalink)  
Antiguo 09/10/2006, 02:28
 
Fecha de Ingreso: octubre-2005
Mensajes: 151
Antigüedad: 18 años, 5 meses
Puntos: 1
swf transparente y ActiveX

El otro dia hice una pregunta y nadie me contesto , creo que ya ha pasado un tiempo razonable de espera, por eso la vuelvo ha hacer.
Buenas a todos, he puesto unos botones flash en una pagina html para que se vean transparentes>>


Código HTML:
<td width="80" height="68" align="center" valign="middle"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="65" height="65">
                  <param name="movie" value="img/BOTONES/PRODUCTOS.swf">
                  <param name=quality value=high >
				  <param name="wmode" value="transparent" />
                  <embed src="img/BOTONES/PRODUCTOS.swf" quality=high wmode="transparent" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="65" height="65"></embed>
                </object></td> 
Tambien he puesto src="embeddedcontent.js" para que no salga el aviso en el EXPLORERRRR, lo que me hace es que los botones aparezcan con fondo,
Código HTML:
<head>
<title>PRUEBA</title>
 <script type="text/javascript" src="embeddedcontent.js"></script> 
</head> 
¿le ha pasado ha alguien mas esto? ¿como solucionarlo? Gracias de antemano, un saludo.
  #2 (permalink)  
Antiguo 09/10/2006, 04:11
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 6 meses
Puntos: 12
Tienes una web deonde verlo?
  #3 (permalink)  
Antiguo 09/10/2006, 04:23
 
Fecha de Ingreso: octubre-2005
Mensajes: 151
Antigüedad: 18 años, 5 meses
Puntos: 1
No la tengo subida, pero la pregunta creo que es sencilla,
1-Poner los botones sin fondo>>> Funciona.
2-Al poner el javascript para desactivar el mensaje del Explorer >>>funciona

3-ASUNTO>> Al poner el javascript el fondo de los botones se hace visible.

Gracias por responder, un saludo.
  #4 (permalink)  
Antiguo 09/10/2006, 05:09
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 6 meses
Puntos: 12
Ahora sí, el .js no tiene los parámetros como deseas. No tendrá los parámetros de wmode. Lo que no tengo claro es:

quieres el wmode transparent o no?

En cualquier caso envía pon el código .js por aquí.
  #5 (permalink)  
Antiguo 09/10/2006, 07:35
 
Fecha de Ingreso: octubre-2005
Mensajes: 151
Antigüedad: 18 años, 5 meses
Puntos: 1
buenas Sirguy, aqui pongo el codigo del javascript, aunque me parece que se hace un poco espeso, haber si me podeis echar una mano, gracias.
Código HTML:
var embeddedContent = 
{

	isMSIE : (document.all && !window.opera) ? true : false,
	
	
	/**
	 * Reinserta en el documento HTML los elementos que han sido incrustados mediante
	 * las etiquetas OBJECT, EMBED y/o APPLET, redefiniendo su propiedad outerHTML
	 */
	reinsertContent : function()
	{
		var totalNodes = new Array(3);
		totalNodes['OBJECT'] = document.getElementsByTagName('OBJECT').length;
		totalNodes['EMBED'] = document.getElementsByTagName('EMBED').length;
		totalNodes['APPLET'] = document.getElementsByTagName('APPLET').length;
		for(var tagName in totalNodes)
		{
			var counter = totalNodes[tagName] - 1;
			for(var node; node = document.getElementsByTagName(tagName)[counter]; counter--)
			{
				var skipNode = false;
				var isVideo = embeddedContent.detectVideoFile(node);
				if(embeddedContent.isMSIE && isVideo)
				{
					/* En Internet Explorer se debe omitir el script para los nodos que 
					están llamando a un archivo de video debido a un fallo que se provocaría 
					al momento de reinsertar el contenido */
					skipNode = true;
				}
				var sourceCode = null;
				if(skipNode == false)
				{
					sourceCode = embeddedContent.getSourceCode(node);
				}
				if(sourceCode)
				{
					node.outerHTML = sourceCode;
				}
			}
		}
		embeddedContent.isMSIE = null;
	},
	
	
	/**
	 * Comprueba si se está utilizando el nodo para cargar un archivo de video (no incluye
	 * los archivos de video llamados desde una película Flash.
	 * @param	node (object) - El nodo que será analizado
	 * @return	isVideo (boolean) - TRUE o FALSE según el resultado obtenido
	 */
	detectVideoFile : function(node)
	{
		var videoFileTypes = 'mov|avi|wmv|rtv|rm|mpg|mpeg';
		switch(node.nodeName)
		{
			case 'EMBED':
				var fileName = node.getAttribute('src');
			break;
			case 'OBJECT':
				var counter = node.getElementsByTagName('PARAM').length - 1;
				for(var child; child = document.getElementsByTagName('PARAM')[counter]; counter--)
				{
					var attribute = child.getAttribute('name').toLowerCase();
					if(attribute == 'src' || attribute == 'filename' || attribute == 'movie')
					{
						var fileName = child.getAttribute('value');
						break;
					}
				}
			break;
			default: return false;
		}
		var fileType = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();
		var isVideo = (videoFileTypes.indexOf(fileType) != -1) ? true : false;
		return isVideo;
	},
	
	
	/**
	 * Obtiene el código HTML completo de un determinado nodo.
	 * @param	node (object) - El nodo analizado
	 * @return	sourceCode (string) - El código HTML obtenido
	 */
	getSourceCode : function(node)
	{
		var sourceCode = node.outerHTML;
		switch(node.nodeName)
		{
			case 'EMBED':
				return sourceCode;
			break;
			case 'OBJECT':
			case 'APPLET':
				var openTag = sourceCode.substr(0, sourceCode.indexOf('>') + 1).toLowerCase();
				var closeTag = sourceCode.substr(sourceCode.length - 9).toLowerCase();
				if(closeTag != '</object>' && closeTag != '</applet>')
				{
					/* Si el nodo está mal formado (etiquetas de apertura y cierre) se debe 
					anular el script ya que podría devolver un resultado incorrecto */
					return null;
				}
				if(embeddedContent.isMSIE)
				{
					/* Para I. Explorer se debe obtener aparte el código HTML de los nodos hijos,
					ya que la propiedad outerHTML en ocasiones devolverá un resultado incompleto */
					var innerCode = embeddedContent.getInnerCode(node);
					sourceCode = openTag + innerCode + closeTag;
				}
				return sourceCode;
			break;
		}
	},
	
	
	/**
	 * Obtiene el código HTML de los nodos hijos de un determinado nodo. No se debe utilizar directamente
	 * la propiedad innerHTML ya que en ciertos casos I. Explorer devolverá un resultado incompleto.
	 * @param	node (object) - El nodo padre que será analizado
	 * @return	innerCode (string) - El código HTML obtenido
	 */
	getInnerCode : function(node)
	{
		var innerCode = '';
		for(var counter = 0, child; child = node.childNodes[counter]; counter--)
		{
			innerCode += child.outerHTML;
		}
		return innerCode;
	}
	
}


/*
Debemos verificar que el agente de usuario cumpla con los requisitos míminos 
para que el script se pueda ejecutar correctamente:

1) Soporte para la propiedad outerHTML y el método getElementsByTagName()
2) El agente de usuario debe ser Internet Explorer u Ópera
*/
if(verifyOuterHTML = document.getElementsByTagName('HEAD')[0].outerHTML)
{
	verifyOuterHTML = null;
	if(document.all || window.opera)
	{
		window.attachEvent('onload', embeddedContent.reinsertContent);
	}
}
  #6 (permalink)  
Antiguo 09/10/2006, 08:02
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 6 meses
Puntos: 12
Ni puta idea, tío. Para quitar el marco del explorer yo he usado los archivos de este tutorial, que son infinitamente más intuitivos y puedes hacerlo (o no) transparente sin problemas y con la mitad de código. Además el código del object/embed es prácticamente igual pero introducido vía js. Fácil.
Pruébalo a ver si hay suerte.

easy-flash.com/tutorial.asp?id_tuto=2
  #7 (permalink)  
Antiguo 09/10/2006, 08:12
 
Fecha de Ingreso: octubre-2005
Mensajes: 151
Antigüedad: 18 años, 5 meses
Puntos: 1
gracias le echare un vistazo, un placer y gracias
  #8 (permalink)  
Antiguo 09/10/2006, 11:26
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
atiro8:

Te respondo como autor de ese script (por lo menos alguien lo usa jajajajajja):
En esa versión del script cometí un error en la función getInnerCode (específicamente en el ciclo FOR), lo que provoca que no se capturen todos los elementos PARAM del OBJECT.

Ese error lo corregí en la versión 1.1 beta 2 del script (lo puedes descargar desde el blog Armonia).

Saludos
  #9 (permalink)  
Antiguo 10/10/2006, 10:38
 
Fecha de Ingreso: octubre-2005
Mensajes: 151
Antigüedad: 18 años, 5 meses
Puntos: 1
Gracias frijolerou, voy ha probar el nuevo script y mi mas sincera felicitacion por hacer este tipo de curro, un saludo.
  #10 (permalink)  
Antiguo 10/10/2006, 11:00
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Gracias.

La verdad es que fue un error bastante torpe de mi parte. El ciclo FOR lo hice en reversa (es más rápido que un ciclo normal), pero no me fijé que al contador (counter) le dí como valor inicial 0, por eso el ciclo lo hace una sola vez y no captura todos los nodos hijos de OBJECT
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:07.