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

Problema con el SWFObject

Estas en el tema de Problema con el SWFObject en el foro de Flash y Actionscript en Foros del Web. Pienso k ya conocereis la existencia de esta aplicacion de javascript,yo de todos modos he decidido situarlo en este lugar al estar relacionado con flash. ...
  #1 (permalink)  
Antiguo 27/12/2006, 05:31
 
Fecha de Ingreso: septiembre-2006
Mensajes: 84
Antigüedad: 17 años, 7 meses
Puntos: 0
Problema con el SWFObject

Pienso k ya conocereis la existencia de esta aplicacion de javascript,yo de todos modos he decidido situarlo en este lugar al estar relacionado con flash.
Bueno la cosa es, k con esta aplicacion si k he conseguido desactivar el marco k inserta internet explorer en la web, cuando insertamos algo de flash.

Una vez hecho esto, quiero que cuando el usuario no tenga instalado el flash player, en la misma pagina tenga la opcion de poder hacerlo, por k en caso contrario el usuario pasaria del asunto y al final no visitaria la web, de este modo le dariamos facilidad para descargar el plugin y visualizar la web correctamente.

Para hace lo anterior dicho, he leido k hay k hacer lo siguiente:
En primer lugar, en el primer fotograma de nuestro .swf debe de ir el siguiente codigo:

Código:
// used for express install - not required for plain SWFObject use

#include "expressinstall.as"

// initialize the ExpressInstall object
var ExpressInstall = new ExpressInstall();

// if the user needs to upgrade, show the 'start upgrade' button
if (ExpressInstall.needsUpdate) {
	
	// this is optional, you could also automatically start the 
	// upgrade by calling ExpressInstall.init() here instead of the following lines

	// attach the custom upgrade message  ** NOTE: see notes in Upgrade Message movieclip re: types of content to use
	var upgradeMsg = _root.attachMovie("upgradeMsg_src", "upgradeMsg", 1);
	upgradeMsg._x = Stage.width / 2;
	upgradeMsg._y = Stage.height / 2;
	
	// attach the button actions that will start the ExpresInstall updater
	upgradeMsg.upgradeBtn.onRelease = function() {
		ExpressInstall.init();
	}
	// if expressinstall is invoked, stop the timeline.
	stop();
}

// -----
// alternate usage:
// -----
/*

// test to see if install is needed:

if (ExpressInstall.needsUpdate) { // returns true if update is needed
  ExpressInstall.init(); // starts the update
  stop();
}

// otherwise, start the movie normally

*/
Y despues en la altura de el swf tenemos k poner el siguiente archivo: expressinstall.as, k como bien habeis visto es el include que agregamos en las primeras lineas. Y entonces se supone k haciendo eso deberia de aparecer la opcion de descargar el plugin de flash. Pero no m aparece nada !!!!
Entonces kisiera k si alguien sabe en k punto fallo o cual puede ser la solucion del problema.
SALU2 Y gracias de antemano.
  #2 (permalink)  
Antiguo 27/12/2006, 11:36
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 18 años, 8 meses
Puntos: 23
Re: Problema con el SWFObject

Hola men!!!

Ya mucho se ha piblicado de este asunto del marco, y al pareser tu ya lo resolviste. Hay dos maneras de publicar los archivos swf; en la pc cuando precionas las teclas Ctrl+Intro se genera el swf para probarlo, la sugando manera, es cuando procionas la tecla F12, se crea un archivo html y un swf; el archivo html tiene un pequeño script donde le indica al usuario que requiere del plugin para visualizar la pagina y es una alerta. Inclusive vienen las instrucciones de como quitar el marco.

De cualquier modo aqui te paso el script:
Cita:
<script language="javascript">AC_FL_RunContent = 0;</script>
<script src="AC_RunActiveContent.js" language="javascript"></script>

<!-- saved from url=(0013)about:internet -->
<script language="javascript">
if (AC_FL_RunContent == 0) {
alert("Esta página requiere el archivo AC_RunActiveContent.js. En Flash, seleccione \"Aplicar actualización de contenido activo\" en el menú Comandos para copiar el archivo AC_RunActiveContent.js en la carpeta de salida HTML.");
} else {
AC_FL_RunContent(
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
'width', '100%',
'height', '100%',
'src', 'felmarini',
'quality', 'high',
'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'showall',
'wmode', 'window',
'devicefont', 'false',
'id', 'felmarini',
'bgcolor', '#24458e',
'name', 'felmarini',
'menu', 'true',
'allowScriptAccess','sameDomain',
'movie', 'felmarini',
'salign', ''
); //end AC code
}
</script>
Y de esta manera tenemos la vida resuelta xD jejeje!!! Espero te sirva de algo!!!
  #3 (permalink)  
Antiguo 28/12/2006, 03:38
 
Fecha de Ingreso: septiembre-2006
Mensajes: 84
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Problema con el SWFObject

Hola buenas:
muchas gracias de antemano por la respuesta, pero no la entiendo muy bien, es decir en primer lugar ya se como se hace el swf de un .fla (jajaja), pero nose eso k tiene k ver con el asunto k hemos comentado.
Entonces donde debo de insertar ese script k m has pasado? Perdona pero no lo he entendido muy bien...
SALU2
  #4 (permalink)  
Antiguo 28/12/2006, 15:05
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 18 años, 8 meses
Puntos: 23
Re: Problema con el SWFObject

Hola de nuevo!!! Perdon por no explicarme bien.

A lo que me referia es, que cuando tu publicas tus paginas desde flash con F12, automaticamente se realiza el script que te puse, y es para que el usuario que no tiene el plugin, lo instale. Y asi no tienes que quebrarte la cabeza jejeje. Pero aqui te lo resumo.

El archivo expressinstall.as abrelo con block de notas, he inserta el siguinte codigo; que es, que si no se tiene el plugin, lo instale:

Cita:
function AC_AddExtension(src, ext)
{
if (src.indexOf('?') != -1)
return src.replace(/\?/, ext+'?');
else
return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs)
{
var str = '<object ';
for (var i in objAttrs)
str += i + '="' + objAttrs[i] + '" ';
str += '>';
for (var i in params)
str += '<param name="' + i + '" value="' + params[i] + '" /> ';
str += '<embed ';
for (var i in embedAttrs)
str += i + '="' + embedAttrs[i] + '" ';
str += ' ></embed></object>';

document.write(str);
}

function AC_FL_RunContent(){
var ret =
AC_GetArgs
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
, "application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
var ret =
AC_GetArgs
( arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
, null
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
var ret = new Object();
ret.embedAttrs = new Object();
ret.params = new Object();
ret.objAttrs = new Object();
for (var i=0; i < args.length; i=i+2){
var currArg = args[i].toLowerCase();

switch (currArg){
case "classid":
break;
case "pluginspage":
ret.embedAttrs[args[i]] = args[i+1];
break;
case "src":
case "movie":
args[i+1] = AC_AddExtension(args[i+1], ext);
ret.embedAttrs["src"] = args[i+1];
ret.params[srcParamName] = args[i+1];
break;
case "onafterupdate":
case "onbeforeupdate":
case "onblur":
case "oncellchange":
case "onclick":
case "ondblClick":
case "ondrag":
case "ondragend":
case "ondragenter":
case "ondragleave":
case "ondragover":
case "ondrop":
case "onfinish":
case "onfocus":
case "onhelp":
case "onmousedown":
case "onmouseup":
case "onmouseover":
case "onmousemove":
case "onmouseout":
case "onkeypress":
case "onkeydown":
case "onkeyup":
case "onload":
case "onlosecapture":
case "onpropertychange":
case "onreadystatechange":
case "onrowsdelete":
case "onrowenter":
case "onrowexit":
case "onrowsinserted":
case "onstart":
case "onscroll":
case "onbeforeeditfocus":
case "onactivate":
case "onbeforedeactivate":
case "ondeactivate":
case "type":
case "codebase":
ret.objAttrs[args[i]] = args[i+1];
break;
case "width":
case "height":
case "align":
case "vspace":
case "hspace":
case "class":
case "title":
case "accesskey":
case "name":
case "id":
case "tabindex":
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
break;
default:
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
}
}
ret.objAttrs["classid"] = classid;
if (mimeType) ret.embedAttrs["type"] = mimeType;
return ret;
}
Nota: este codigo colocalo al ultimo del script
A hora este codigo ponlo en el html:
Cita:
<script language="javascript">AC_FL_RunContent = 0;</script>
<script src="expressinstall.as" language="javascript"></script>

<script language="javascript">
if (AC_FL_RunContent == 0) {
alert("Esta página requiere el archivo AC_RunActiveContent.js. En Flash, seleccione \"Aplicar actualización de contenido activo\" en el menú Comandos para copiar el archivo AC_RunActiveContent.js en la carpeta de salida HTML.");
} else {
AC_FL_RunContent(
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
'width', '100%',
'height', '100%',
'src', 'felmarini',
'quality', 'high',
'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'showall',
'wmode', 'window',
'devicefont', 'false',
'id', 'felmarini',
'bgcolor', '#24458e',
'name', 'felmarini',
'menu', 'true',
'allowScriptAccess','sameDomain',
'movie', 'felmarini',
'salign', ''
); //end AC code
}
</script>
<noscript>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="779" height="431" id="felmarini" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="felmarini.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#24458e" /> <embed src="felmarini.swf" quality="high" bgcolor="#24458e" width=100% height=100% name="felmarini" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</noscript>
Nota:todo lo que diga felmarini sustituyelo por el nombre de tu swf y el "clsid" que es un numerote sustituyelo por el que tiene tu html original.
Este scipt tiene 2 funciones, quita el marco y detecta si esta instalado el plug in de flash, en caso de que no se tenga el plugin que lo instale

Como veras es mucho que escribir o copiar ejeje; asi te ahorras todo esto. Y es por eso que hay que seguir esta indicasion cada que realices un swf para el web: En Flash, seleccione \"Aplicar actualización de contenido activo\" en el menú Comandos para copiar el archivo AC_RunActiveContent.js en la carpeta de salida HTML

Última edición por Turdo; 28/12/2006 a las 15:14
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 18:50.