Por que no usas una escala dependiendo del ancho en virtual pixels? Tipo lo que se hace en web…
--
--
-----------------------------------------------------------------------
ASNativos
www.asnativos.com
-----------------------------------------------------------------------
---
Has recibido este mensaje porque estás suscrito al grupo "ASNativos - Lista de Actionscript" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asnativos+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
_dpWide = _stage.fullScreenWidth * 160 / dpi;
SI, a eso me refieria a los device independent pixels. Aquí viene mas info http://blog.fluidui.com/designing-for-mobile-101-pixels-points-and-resolutions/
Pero resumiendo:
package reborn.utils
{
import flash.display.Stage;
import flash.geom.Rectangle;
import flash.system.Capabilities;
/** Class with useful info to scale and place stuff on the screen **/
public class Device
{
public static const Android:String = "Android";
public static const iOS:String = "iOS";
private var _stage:Stage;
public function get stage():Stage { return _stage; }
private var _dpi:Number;
public function get dpi():Number { return _dpi; }
private var _os:String;
public function get os():String { return _os; }
private var _isTablet:Boolean;
public function get isTablet():Boolean { return _isTablet; }
private var _devicePixelSize:Rectangle;
public function get devicePixelSize():Rectangle { return _devicePixelSize; }
private var _deviceDipSize:Rectangle;
public function get deviceDipSize():Rectangle { return _deviceDipSize; }
private var _contentPixelSize:Rectangle;
public function get contentPixelSize():Rectangle { return _contentPixelSize; }
private var _contentDipSize:Rectangle;
public function get contentDipSize():Rectangle { return _contentDipSize; }
private var _toolbarDipHeight:Number;
public function get toolbarDipHeight():Number { return _toolbarDipHeight; }
private var _toolbarPixelHeight:Number;
public function get toolbarPixelHeight():Number { return _toolbarPixelHeight; }
private var _baseDensity:int;
public function get baseDensity():int { return _baseDensity; }
public function Device(stage:Stage, toolbarDpHeight:int)
{
_stage = stage;
// Capabilities.screenDPI may some times be wrong acording to the docs
var serverString:String = unescape(Capabilities.serverString);
_dpi = Number(serverString.split("&DP=", 2)[1]);
var osLowerCase:String = Capabilities.os.toLowerCase();
_os = osLowerCase.indexOf("iphone") >= 0 ? iOS : Android;
_baseDensity = _os == iOS ? 163 : 160;
var physicalWidth:Number = _stage.fullScreenWidth / _dpi;
var pysicalHeight:Number = _stage.fullScreenHeight / _dpi;
var diagonalInches:Number = Math.sqrt((physicalWidth * physicalWidth)
+ (pysicalHeight * pysicalHeight));
_isTablet = _os == iOS
? osLowerCase.indexOf("ipad", 0) != -1
: diagonalInches >= 6; // TODO is there any mobile device with 6 or more inches?
// pixel measures
_toolbarPixelHeight = DipToPixels(toolbarDpHeight);
_devicePixelSize = new Rectangle(0, 0,
Math.max(_stage.fullScreenWidth, _stage.fullScreenHeight),
Math.min(_stage.fullScreenWidth, _stage.fullScreenHeight));
_contentPixelSize = new Rectangle(0, _toolbarPixelHeight,
_devicePixelSize.width,
_devicePixelSize.height - _toolbarPixelHeight);
// DIP (density independent pixels) measures
_toolbarDipHeight = toolbarDpHeight;
var screenDpWidth:Number = PixelsToDip(_stage.fullScreenWidth);
var screenDpHeight:Number = PixelsToDip(_stage.fullScreenHeight);
_deviceDipSize = new Rectangle(0, 0,
Math.max(screenDpWidth, screenDpHeight),
Math.min(screenDpWidth, screenDpHeight));
_contentDipSize = new Rectangle(0, _toolbarDipHeight,
_deviceDipSize.width,
_deviceDipSize.height - _toolbarDipHeight);
}
public function DipToPixels(dip:Number):Number
{
return (dip * dpi) / _baseDensity;
}
public function PixelsToDip(pixels:Number):Number
{
return (pixels * _baseDensity) / dpi;
}
}
}
Ya solo me queda testearlo, pero yo creo que tiene todo lo que necesito.
Salud
Hey, me alegro de que te haya sido útil :)
public function DipToPixels(dip:Number):Number
{
return (dip * dpi) / _baseDensity;
}
public function PixelsToDip(pixels:Number):Number
{
return (pixels * _baseDensity) / dpi;
}
public function ScaleToDip(view:DisplayObject, dip:Number):DisplayObject
{
var pixelWidth:Number = view.width;
view.width = DipToPixels(dip);
view.scaleY = view.scaleX;
return view;
}
Jajajaj :) que gustazo tiene que ser…
¡Error! Nombre de archivo no especificado.
Joder ahí me pillas :(
¿Pero es realmente posible hacer un juego para iPad sólo con DisplayList? O__o. Pocas animaciones tendrá, ¿no?
Saludos.
¿Pero es realmente posible hacer un juego para iPad sólo con DisplayList? O__o. Pocas animaciones tendrá, ¿no?
Saludos.
--