我在Flex移动卡片游戏中使用applicationDPI:
<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
firstView="views.Menu"
applicationDPI="160"
initialize="init()">
<fx:Style source="Preferans.css" />
<fx:Script>
<![CDATA[
import spark.core.ContentCache;
public static const AVATAR_CACHE:ContentCache = new ContentCache();
public static var SCALE:Number;
public function init():void {
SCALE = runtimeDPI / applicationDPI;
}
]]>
</fx:Script>
</s:ViewNavigatorApplication>
并根据它提供3种不同分辨率的资产:
<fx:Declarations>
<s:MultiDPIBitmapSource id="BACK"
source160dpi="@Embed('assets/icons/low-res/back.png')"
source240dpi="@Embed('assets/icons/mid-res/back.png')"
source320dpi="@Embed('assets/icons/high-res/back.png')"/>
</fx:Declarations>
当我在Flash Builder 4.6中选择iPad模拟器时,结果仍然不太好看:
选择Google Nexus One会产生更好的结果:
这里有什么用于检测手机与平板电脑设备的内容?
检查屏幕分辨率在这里没有用 - 请参阅上面的iPad示例(低分辨率,但大屏幕)。
答案 0 :(得分:6)
public static function get isTablet():Boolean
{
var deviceWidth:Number = Capabilities.screenResolutionX / Capabilities.screenDPI;
var deviceHeight:Number = Capabilities.screenResolutionY / Capabilities.screenDPI;
var diagonalInches:Number = Math.sqrt((deviceWidth * deviceWidth)+ (deviceHeight * deviceHeight));
if(diagonalInches>=7)
return true;
else
return false;
}
答案 1 :(得分:3)
对于我为工作而做的项目,我必须评估完全相同的问题。为此,我创建了一个在app init上运行的新类,它将评估设备并做出一些决定。
基本上,我做了这个
var deviceWidth:Number = Capabilities.screenResolutionX / Capabilities.screenDPI;
var deviceHeight:Number = Capabilities.screenResolutionY / Capabilities.screenDPI;
这将为您提供大多数设备上的设备宽度和高度。但是,screenDPI属性并不总是准确的,因此这在100%的时间内都不起作用。然而,它经常运作,我不认为这是一个问题。
从那时起,我做了一些研究。我发现电话不再是手机而开始是平板电脑的那一点。没有标准的方法,所以我采用了我能找到的最小的流行平板电脑(当时,Blackberry Playbook或Kindle Fire,不记得哪个),并使用该屏幕的尺寸作为手机和平板电脑之间的断点。
if ( deviceWidth >= fireWidth && deviceHeight >= fireHeight ) {
isTablet = true;
}
else {
isPhone = true;
}
显然,这是伪代码,但你明白了。我还投入了一些检查以区分每个平台(iOS,Android和桌面),如果是iOS,我手动设置它是平板电脑还是手机,因为那里的设备领域有限。
从那里,我有两个接口。一个用于手机,一个用于平板电脑。在我的Application类的addedToStage
函数中,我使用isPhone
和isTablet
检查来选择要加载的接口。
可能不是应该怎么做,也不是傻瓜证明。不幸的是,据我所知,这是我们最接近Adobe AIR中具有特定于设备的接口的通用应用程序。