适用于iPhone 5屏幕的Flex移动应用程序

时间:2012-11-02 19:52:01

标签: iphone-5 flex-mobile

我刚刚在iPhone 5上测试了我的第一个Flex移动应用程序,但我认为它不适合新的4英寸屏幕。有人知道这是否已经可行吗?(使用Flex 4.6 SDK)

2 个答案:

答案 0 :(得分:3)

这有点傻,但它有效。首先,请确保您已the latest AIR SDK installed in your Flash Builder eclipse plug in directory。这将确保以下技巧确实有效。

现在,转到项目主MXML文件(如果您正在构建一个基于视图的项目,它将是一个ViewNavigatorApplication类实例)。在打开的ViewNavigatorApplication标记中,为splashScreenImage放置一个值为“@Embed('Default568h@2x.png')”的属性。看起来应该是这样......

<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                        xmlns:s="library://ns.adobe.com/flex/spark"
                        firstView="views.myFirstView"
                        splashScreenImage="@Embed('Default-568h@2x.png')">

现在,制作一个640w x 1136h的闪屏png,并将其命名为“Default-568h@2x.png”。将该图像文件放在项目的根目录(可能是您的“src”目录)中。编译你的iPhone 5目标并瞧!

事实证明,AIR会查找更大的启动画面文件,作为指向iPhone 5屏幕尺寸的指标。 app.xml文件中没有设置。代码中没有属性。只是那个splashScreenImage文件名。

这很明显,是吗?

就为不同的屏幕尺寸创建不同的布局而言,Rich Tretola有一本非常便宜的书,即使用Flex 4.5的iOS应用程序,它讨论了使用@media查询的响应式设计。 His website has an excerpt that might help ......但这本书很便宜,实用且易于阅读。

答案 1 :(得分:2)

您可以像这样动态更改启动画面:

<?xml version="1.0" encoding="utf-8"?>
<s:SplashScreenImage xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark">  

    <fx:Script>
        <![CDATA[
            override public function getImageClass(aspectRatio:String, dpi:Number, resolution:Number):Class 
            {
                var x:Number = Capabilities.screenResolutionX;
                var y:Number = Capabilities.screenResolutionY;


                // HTC
                if ((x == 480) && (y == 800)) return img_480_800.source;

                // iPhone 5
                if ((x == 640) && (y == 1136)) return img_1080_1920.source;

                // iPhone 4
                if ((x == 640) && (y == 960)) return img_640_960.source;

                // Samsung galaxy s3
                if ((x == 720) && (y == 1280)) return img_720_1280.source;

                // Samsung galaxy s4
                if ((x == 1080) && (y == 1920)) return img_1080_1920.source;

                // Default
                return img_1080_1920.source;
            } 
        ]]>
    </fx:Script>


    <s:SplashScreenImageSource id="img_480_800" source="@Embed('Default_480_800.png')"/>
    <s:SplashScreenImageSource id="img_640_960" source="@Embed('Default@2x.png')"/>
    <s:SplashScreenImageSource id="img_720_1280" source="@Embed('Default_720_1280.png')"/>
    <s:SplashScreenImageSource id="img_1080_1920" source="@Embed('Default-568h@2x.png')"/>

</s:SplashScreenImage>

...

splashScreenImage="DynamicSplashScreen"