Home » AIR »AS3 »Class »iOS » Currently Reading:

Cargar imágenes en aplicaciones iOS con Flash CS5.5

junio 4, 2011 AIR, AS3, Class, iOS No Comments
Cargar imágenes en aplicaciones iOS con Flash CS5.5

Cuando creamos una aplicación para Iphone desde Flash el tamaño de documento que utilizamos es 320×480 que es la resolución disponible en un Iphone 3.

En el caso del Iphone 4 tenemos una resolución de 640×960, osea que nuestra aplicación se escalará para adaptarse a esta mayor resolución. Si estamos utilizando imágenes bitmap en nuestra aplicación veremos que tenemos una perdida de calidad al estar escalándose al doble de tamaño.

Si hemos utilizado Xcode sabremos que por cada imagen tendremos su equivalente con el mismo nombre acabo en “@X2” y doble de resolución, que automaticamente se sustituirá en al visualizarse la aplicación en pantalla retina.

Creando nuestra aplicación en AIR para IOS podemos conseguir esta misma característica creando una clase que nos muestre la imagen normal o su equivalente al doble de resolución dependiendo de la resolución del dispositivo.

Con una simple comprobación de la profundidad de pixel del dispositivo podemos saber si estamos en una pantalla retina, en ese caso cambiaremos el nombre de la imagen a su equivalente con el doble de resolución y reduciremos la escala al clip a la mitad para que se visualice al mismo tamaño:

  1. if(flash.system.Capabilities.screenDPI==326) //iphone 4
  2. {
  3.     $__urlAsset = $__urlAsset.replace(".","@2x.");
  4.     this.scaleX = .5;
  5.     this.scaleY = .5;
  6. }

Este código utilizado en una clase similar a la que mostré en =http://www.cristalab.com/tutoriales/clase-para-cargar-un-swf-externo-en-flash-c26811lun tip hace mucho tiempo[/url] quedaría asi:

  1. package com.cristalab.display
  2. {
  3.     import flash.display.Bitmap;
  4.     import flash.display.Loader;
  5.     import flash.display.Sprite;
  6.     import flash.events.Event;
  7.     import flash.net.URLRequest;
  8.     import flash.system.Capabilities;
  9.     import flash.system.LoaderContext;
  10.     //-----------------------------------------
  11.     public class BitmapIOS extends Sprite
  12.     {
  13.         public static const CARGADO:String = "cargado";
  14.         private var $__cargado:Boolean = false;
  15.         private var $__context:LoaderContext = new LoaderContext();
  16.         private var $__loader:Loader = new Loader();
  17.         private var $__urlAsset:String;
  18.         //-----------------------------------------
  19.         public function BitmapIOS(asset:String = null)
  20.         {
  21.             $__urlAsset = asset;
  22.             if($__urlAsset != null)
  23.             {
  24.                 this.__load();
  25.             }
  26.         }
  27.         //-----------------------------------------
  28.         public function set asset(a:String):void
  29.         {
  30.             if($__urlAsset != null)
  31.             {
  32.                 borra();
  33.             }
  34.             $__urlAsset = a;
  35.             this.__load();
  36.         }
  37.         //-----------------------------------------
  38.         public function borra():void
  39.         {
  40.             this.removeChild($__loader);
  41.             $__loader.unload();
  42.             $__urlAsset = null;
  43.         }
  44.         //-----------------------------------------
  45.         public function get cargado():Boolean
  46.         {
  47.             return $__cargado;
  48.         }
  49.         //-----------------------------------------
  50.         private function __load():void
  51.         {
  52.             if($__urlAsset != null)
  53.             {
  54.                 if(flash.system.Capabilities.screenDPI==326) //iphone 4
  55.                 {
  56.                     $__urlAsset = $__urlAsset.replace(".","@2x.");
  57.                     this.scaleX = .5;
  58.                     this.scaleY = .5;
  59.                 }
  60.                 $__loader.load(new URLRequest($__urlAsset), $__context);
  61.                 $__loader.contentLoaderInfo.addEventListener(Event.INIT, __onLoadComplete, false, 0, true);
  62.                 this.addChild($__loader);
  63.             }
  64.         }
  65.         private function __onLoadComplete(e:Event = null):void
  66.         {
  67.             $__loader.contentLoaderInfo.removeEventListener(Event.INIT, __onLoadComplete);
  68.             Bitmap($__loader.content).smoothing = true;
  69.             $__cargado = true;
  70.             dispatchEvent(new Event(Contenedor.CARGADO));
  71.         }
  72.         //-----------------------------------------
  73.     }
  74. }

Esta clase la asignaríamos a un MovieClip vacío en nuestra librería. Para cargar las imágenes lo situaremos en la posición deseada y utilizaremos un código similar a este:

  1. this.img.asset  = "flash.png";

Según sea la pantalla retina o no, nos cargará el fichero “flash.png” o “flash@2x.png”.

Hay que recordar que hemos de incluir ambos archivos dentro de la carpet de nuestra aplicación para poder acceder a ellos.

Compártelo:

Cargar imágenes en aplicaciones iOS con Flash CS5.5
Visto 2.879 veces

Comment on this Article:








siete − 5 =

Usuarios

Usuarios registrados: 3,443

Recibe las novedades por email

Map

AdvertisementAdvertisementAdvertisementAdvertisement


Ranking

Codigoactionscript.org: 4.65 sobre 5 (106 valoraciones)

twitter-widget.com