A continuación podéis ver los pasos que hay que seguir en Windows para poder testear aplicaciones creadas con Flash CS5.5 en vuestro dispositivo Apple (iPod/iPhone/iPad). Suponiendo que ya habéis pagado los 80 euros anuales que cuesta la cuenta de desarrollador iOS.
A la hora de publicar nuestra aplicación generamos un archivo .ipa, que utilizaremos en el iTunes para pasarlo a nuestro dispositivo. Para poder crearlo se nos pide un certificado con extensión .p12 y el archivo de suministro. Primero crearemos el certificado, daremos de alta nuestro dispositivo (solo podremos testearlo en el que seleccionamos) y crearemos el id de nuestra futura aplicación.
Read More »
En el siguiente código podemos ver una forma de visualizar un documento html y movernos a través de sus anclas internas.
Definimos en el layout el componente WebView y el botón para ir a la siguiente ancla:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/next" android:text="Next"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<WebView android:id="@+id/web"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
</LinearLayout>
Read More »
Algunos ejemplos de expresiones regulares en Actionscript.
var pattern:RegExp;
var txt:String;
txt = "too tough to die";
pattern = /to/sgi;
txt = txt.replace(pattern, "2");
trace(txt); // 2o 2ugh 2 die
Read More »
Limitaremos el número de conexiones a Twitter, accediendo como máximo una vez cada hora.
Pasado ese tiempo actualizaremos el valor en nuestro “cache_archivo”.
<?php
function twitter_contador($nombreusuario) {
$cache_archivo = CACHEDIR . 'twitter_contador' . md5 ( $nombreusuario );
if (is_file ( $cache_archivo ) == false) $cache_tiempo = strtotime ( '1978-09-04 13:10' );
else $cache_tiempo = filemtime ( $cache_archivo );
$tiempo_actual = strtotime ( date ( 'Y-m-d H:i:s' ) );
$tiempo_diferencia = $tiempo_actual - $cache_tiempo;
$tiempo_recarga = 3600; // mínimo de segundos antes de volver a realizar la conexión a twitter
if ($tiempo_diferencia > $tiempo_recarga) {
$xml = file_get_contents ( 'http://twitter.com/users/show/' . $nombreusuario );
$perfil = new SimpleXMLElement ( $xml );
$contador = $perfil->followers_count;
if (is_file ( $cache_archivo ) == true) unlink ( $cache_archivo );
touch ( $cache_archivo ); // momento de modificación cambiado a la hora actual
file_put_contents ( $cache_archivo, strval ( $contador ) );
return strval ( $contador );
}
else {
$contador = file_get_contents ( $cache_archivo );
return strval ( $contador );
}
}
echo twitter_contador('PlasmikMedia');
?>
En el siguiente código podemos ver una forma de acceder a los símbolos que tenemos en la librería de un swf externo.
En este caso, una vez cargado el swf creamos una instancia del movieclip “content”.
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
protected var _swfUrl:String = "plasmik_content.swf";
protected var _movieclip:MovieClip;
loadSwf();
Read More »
In the raw folder, of our android project, have a test.zip file to decompress. The control class is the controller of my application.
import android.os.Environment;
import com.plasmik.test.Control;
import com.plasmik.test.R;
public void testRaw()
{
try{
// output
File sdcard = Environment.getExternalStorageDirectory();
String subfolderSd = sdcard.getAbsolutePath() + "/" + Control.getPrefs().folderProject;
File outputDir = new File (subfolderSd);
// zip
File f = new File(subfolderSd+"/test.zip");
android.content.res.Resources t = Control.getContext().getResources();
InputStream fis = t.openRawResource(R.raw.test);
Utils.inputstreamToFile(fis, f);
ZipHelper.unzip(f, outputDir);
}
catch (Exception e) {
Log.d("control","unzip error: "+e);
}
}
Read More »
Gracias a Thibault Imbert, Product Manager for the Adobe Flash Runtimes, ayer pudimos conocer de primera mano algunas de las mejoras de la nueva versión de Flash Player 10.3 :
- “Molehill” 3D APIs – A new set of low-level, GPU-accelerated 3D APIs that enable advanced 3D experiences
- Cubic Bezier Curves — Using the cubicCurveTo drawing API
- Async bitmap decoding
- LZMA compression
- G.711 audio compression for telephony
- H.264/AVC SW Encode for camera encoding
- Native JSON Support (JavaScript Object Notation)
- Pause/sleep/resume Events
- Garbage Collector Advice — System.pauseForGCIfCollectionImminent
- Socket Progress Events
- Secure random number generator — Develop more secure client/server applications for the enterprise and end users.
- DisplayObjectContainer.removeChildren — Removes all the children from a container.
- MovieClip.isPlaying — Informs you if the MovieClip is currently playing.
- Large Bitmap Support — No limitations in BitmapData sizes.
- Sound.loadCompressedDataFromByteArray and Sound.loadPCMFromByteArray — Allows you to inject compressed or PCM sound stream to the Sound object.
<?php
function twitter_feed($username) {
$feedurl = "http://search.twitter.com/search.atom?q=from:".$username."&rpp=1";
$feed = file_get_contents($feedurl);
$s1 = explode("<content type=\"html\">", $feed);
$s2 = explode("</content>", $s1[1]);
$tweet = $s2[0];
$tweet = str_replace("<", "<", $tweet);
$tweet = str_replace(">", ">", $tweet);
return $tweet;
}
echo twitter_feed("PlasmikMedia");
?>
Si necesitáis insertar un formulario flash dentro de html, es posible que no podáis introducir el carácter @ en vuestro campo de email. Hay navegadores, como ciertas versiones de firefox, que al utilizar la combinación de teclas para escribir @ no lo hace correctamente.
Por lo que he podido ir viendo por internet, el problema está en un bug del navegador al utilizar el parámetro wmode dentro del object. Configurándolo con el valor “transparent” no funciona, pero con “normal” si aparecen los carácteres correctamente.
<object>
<embed ... wmode="normal"></embed>
<param name="wmode" value="normal"/>
</object>
Por otro lado, utilizando el valor “normal” también consigo que funcionen correctamente recursos con scroll que dejaban de funcionar en algunos navegadores al utilizar MouseEvent.MOUSE_WHEEL