//////////////////////////////////////////////////////////////////////////////// // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to You under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with // the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// package spark.preloaders { import mx.core.INavigatorContent; import mx.core.mx_internal; use namespace mx_internal; /** * Use the SplashScreenImageSource class to specify a Class (typically an embedded image) * to be displayed as splash screen at a particular device configuration such as * DPI, orientation and resolution. * *
You typically use one or more SplashScreenImageSource
* objects to define a SplashScreenImage class in MXML
* and set the application's splashScreenImage
property to that class.
Shown below is SplashScreenImage component with three different * definitions for SplashScreenImageSource:
* ** <?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"> * * <!-- Default splashscreen image. --> * <s:SplashScreenImageSource * source="@Embed('assets/logoDefault.jpg')"/> * * <s:SplashScreenImageSource * source="@Embed('assets/logo240Portrait.jpg')" * dpi="240" * aspectRatio="portrait"/> * * <s:SplashScreenImageSource * source="@Embed('assets/logo240Landscape.jpg')" * dpi="240" * aspectRatio="landscape"/> * * </s:SplashScreenImage> ** * @mxml * *
The <s:SplashScreenImageSource>
tag inherits all of the tag
* attributes of its superclass and adds the following tag attributes:
* <s:SplashScreenImageSource * Properties * aspectRatio="null" * dpi="NaN" * minResolution="NaN" * source="null" * > ** * @see spark.preloaders.SplashScreenImage * @see spark.components.Application#splashScreenImage * * @langversion 3.0 * @playerversion AIR 3 * @productversion Flex 4.6 */ public class SplashScreenImageSource { //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor. * * @langversion 3.0 * @playerversion AIR 3 * @productversion Flex 4.6 */ public function SplashScreenImageSource() { } //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // aspectRatio //---------------------------------- [Inspectable(category="General", enumeration="portrait,landscape")] /** * The required aspect ratio of the mobile device. * This property can be either
flash.display.StageAspectRatio.PORTRAIT
* or flash.display.StageAspectRatio.LANDSCAPE
.
*
* If not set, then SplashScreenImage
ignores this property.
A value of NaN means the property is ignored by SplashScreenImage.
* * @default NaN * * @langversion 3.0 * @playerversion AIR 3 * @productversion Flex 4.6 */ public var dpi:Number = NaN; //---------------------------------- // minResolution //---------------------------------- [Inspectable(category="General")] /** * The required minimum size of the mobile device's resolution needed * to display the image. * The device resolution is the maximum of the stage width and height, in pixels. * The value of theminResolution
property is compared against the larger
* of the values of the Stage.stageWidth
and Stage.stageHeight
properties.
* The larger of the two values must be equal to or greater than the minResolution
property.
*
* You can use this property to display different images based on the pixel * resolution of a device.
* *A value of NaN means the property is ignored by the SplashScreenImage.
* * @default NaN * * @langversion 3.0 * @playerversion AIR 3 * @productversion Flex 4.6 */ public var minResolution:Number = NaN; //---------------------------------- // source //---------------------------------- [Inspectable(category="General")] /** * The image class for the splash screen to use for the defined * device configuration. * Typically you set this property to an embedded resource. * *For example:
* ** <s:SplashScreenImageSource * source="@Embed('assets/logo240Portrait.jpg')" * dpi="240" * aspectRatio="portrait"/> ** * @see spark.preloaders.SplashScreenImage * * @default null * * @langversion 3.0 * @playerversion AIR 3 * @productversion Flex 4.6 */ public var source:Class; //-------------------------------------------------------------------------- // // Methods // //-------------------------------------------------------------------------- /** * @private * * Returns true when this SplashScreenImageSource is applicable to the * specified device config. */ mx_internal function matches(aspectRatio:String, dpi:Number, resolution:Number):Boolean { return (!this.aspectRatio || this.aspectRatio == aspectRatio) && (isNaN(this.dpi) || this.dpi == dpi) && (isNaN(this.minResolution) || this.minResolution <= resolution); } /** * @private * * Helper function to use when sorting SplashScreenImageSource objects. * * More specific (with more explicit settings) objects will end up in the beginning of * the sorted array. */ mx_internal function betterThan(source:SplashScreenImageSource):Boolean { if (this.specificity() != source.specificity()) { return this.specificity() > source.specificity(); } else { return getMinResolution() > source.getMinResolution(); } } /** * @private * Helper function used when comparing two SplashScreenImageSource objects */ private function getMinResolution():Number { return isNaN(minResolution) ? 0 : minResolution; } /** * @private * Returns how many explicit settings there are for this SplashScreenImageSource */ private function specificity():int { var result:int = 0; if (aspectRatio) result++; if (!isNaN(dpi)) result++; if (!isNaN(minResolution)) result++; return result; } } }