Adobe Native Extension - AdMob

Esta extensión ya no existe, he creado una nueva con el último SDK de AdMob y compatible con Android y iOS, puedes ver la nueva entrada aquí: http://www.enriquedavid.es/admob-native-extension-para-ios-y-android.html

----------------------------------------------------------

El uso de las Native Extensions de Adobe permite ejecutar código nativo del sistema operativo donde se ejecute nuestra aplicación.

Para sacar el máximo partido de AdMob con Juegos Flash empaquetados para iPhone/iPad/iPod Touch, es necesario mostrar la publicidad de AdMob de forma nativa, de esta manera se consigue un 100% de efectividad, ya que AdMob muestra la publicidad como de forma nativa, así es capaz de mostrar todas las creatividades disponibles e incluso mostrar AdSense si no tiene anuncios relevantes.

Aquí os dejo un .zip con la extensión y una pequeña ayuda: admob-native-extension.zip

El uso es realmente sencillo:

package {
import com.devilishgames.air.extensions.admob.ios.AdMob;
import flash.display.Sprite;
import flash.geom.Point;

public class adMobExample extends Sprite {
private var adMob:AdMob;

public function adMobExample():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);

try {
adMob = new AdMob(); // Instanciamos la clase AdMob
adMob.id = "ID DE ADMOB"; // Indicar el ID de la APP de AdMob
adMob.size = AdMob.GAD_SIZE_320x50; // Indicamos el tamaño del Banner
adMob.position = new Point(0, stage.stageHeight - adMob.size.y); // Indicamos la posición del banner
adMob.testMode = false; // Decimos que no use el modo test
adMob.showAdMob(); // Mostramos el banner
} catch (e:Error) {
trace(e.getStackTrace());
}
}
}
}

Descripción de la clase:

adMob.id: (String) Cadena con el ID de AdMob
adMob.size: (Point) Punto donde indicar el ancho y alto del banner (.x = ancho, .y = alto)
adMob.position: (Point) Punto donde indicar la posición del banner
adMob.testMode: (Boolean) Mostrar el banner en modo Test o no (por defecto True)
adMob.showAdMob(): (Function) Muestra el banner
adMob.hideAdMob(): (Function) Oculta el banner

Espero que os sea de utilidad.

* a modo de ayuda, menos del 10% de los banners que se muestran serán con un ID mio *


Como guardar datos de forma permanente en Flash (ActionScript 3)

Guardar datos, que permanezcan utilizables incluso cuando se cierra Flash es algo realmente sencillo. Es una buena técnica para guardar los progresos en los videojuegos, puntos, niveles, etc.

Para guardar datos debemos de usar el objeto: SharedObject (más info), esto objeto, entre otras cosas, nos permite guardar variables en disco, para luego poder leerlas y modificarlas cada vez que lo necesitemos.

La forma de guardar los datos

// Importamos la libreria
import flash.net.SharedObject;

// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;

// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal("/ficherodondeguardamoslosdatos");

// Añadimos un valor (por ejemplo la puntuación)
so.data.puntuacion = miPuntuacionJuego;

// Guardamos los datos
so.flush();

La forma de cargar los datos
// Importamos la libreria
import flash.net.SharedObject;
// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;
// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal("/ficherodondeguardamoslosdatos");
// Recuperamos un valor (por ejemplo la puntuación)
if (so.data.puntuacion>0) { // Hay que asegurarse que los datos guardados tienen información válida
miPuntuacionJuego = so.data.puntuacion;
}
¡¡Y esto es todo amigos!!

Comunicar entre Flash y FBML (Facebook)

Recientemente, y como ya nos tienen acostumbrados, Facebook ha realizado cambios en su API sin previo aviso.

Por ahora uno de los cambios más importantes que he detectado y que ha afectado a alguna de mis APP en Facebook es la comunicación entre Flash y JavaScript, si bien, antes para llamar a funciones definidas dentro de flash bastaba con hacer lo siguiente:

Iniciar e incluir la película flash:

<fb:fbjs-bridge/>
<fb:swf swfsrc='url-al-archivo.swf' width='760' height='500' wmode='opaque' id='movie' flashvars='var1=1&var2=2'/>

Y luego hacer las llamadas a las funciones de flash desde JavaScript de la siguiente forma:
document.getElementById('movie').callSWF('funcionEnFlash', param1, param2);
Pues bien, ahora Facebook ha cambiado y esto se ha de realizar de otra forma, un poquito más compleja, pero efectiva igualmente.
Iniciamos el flash:
<fb:fbjs-bridge />
<div id="swfContainer"></div>
<script>
<!--
var swf = document.createElement('fb:swf');
swf.setId('movie');
swf.setWidth('760');
swf.setHeight('500');
swf.setSWFSrc('url-al-archivo.swf');
swf.setFlashVar('var1=1&var2=2');
document.getElementById('swfContainer').appendChild(swf);
-->
</script>
Y para llamar a las funciones en flash basta con hacer la misma llamada que antes:
document.getElementById('movie').callSWF('funcionEnFlash', param1, param2);
Y con esto ya volvemos a comunicar flash con facebook.

Ejecutar código Javascript al pulsar en un botón

En esta ocasión, Alberto me realiza la siguiente consulta:

Pregunta:

Como pasar el siguiente código ActionScript 2 a ActionScript 3:

on (release) {
getURL(
"javascript:hideBL(\'variable\')");
}


Lee el resto de esta entrada »

Llamadas a funciones Javascript desde Actionscript 3

La llamada a funciones Javascript que esten en el HTML de la web que muestra la película Flash, es realmente sencillo, tan sólo debemos de utilizar este código:
Importamos la librería externa que vamos a utilizar:

import flash.external.ExternalInterface;

Y donde querámos utilizar la función Javascript sólo tenemos que hacer lo siguiente:

ExternalInterface.call("funcion_javascript");

De esta forma podemos pasar variables a la función Javascript:

var devolucion:int = ExternalInterface.call("funcion_javascript", "valor");

... y recoger variables devueltas por la función.