Search code examples
airflashmxmlflash-builder

Flash builder basic - Trying to load the air.swf file


I have created a new Flex project and have the following code in a .mxml file.

<?xml version="1.0"?>
<!-- usingas/StatementSyntax.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="doSomething()">
    <mx:Script><![CDATA[
        var airSWF:Object; // This will be the reference to the main class of air.swf
        var airSWFLoader:Loader = new Loader(); // Used to load the SWF
        var loaderContext:LoaderContext = new LoaderContext(); 
        // Used to set the application domain domain

        loaderContext.applicationDomain = ApplicationDomain.currentDomain;

        airSWFLoader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
        airSWFLoader.load(new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf"), 
            loaderContext);

        function onInit(e:Event):void 
        {
            airSWF = e.target.content;
        }
    ]]></mx:Script>

    <mx:Label id="label1"/>

</mx:Application>

These are the errors:

1120: Access of undefined property airSWFLoader. WebTry.mxml /WebTry/src line 12 Flex Problem

1120: Access of undefined property loaderContext. WebTry.mxml /WebTry/src line 10 Flex Problem

The idea is to be able to get the air.swf file working in the above code to detect if our air app is installed, launch the air app from the browser, etc.


Solution

  • Well, no answers from anyone, but here is the solution!

    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                               xmlns:s="library://ns.adobe.com/flex/spark" 
                               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
                               creationComplete="init()" >
    
            <fx:Script>
                    <![CDATA[
    
                            public function init():void {
                                    _loader = new Loader();
                                    var loaderContext:LoaderContext = new LoaderContext();
                                    loaderContext.applicationDomain = ApplicationDomain.currentDomain;
                                    _loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
                                    _loader.load(new URLRequest(BROWSERAPI_URL_BASE + "/air.swf"), loaderContext);
                            }
    
                            private function onInit(e:Event):void {
                                    _air = e.target.content;
                                    launchButton.enabled = true;
                            }
    
                            private function onButtonClicked(e:Event):void {
                                    **_air.launchApplication( APP_ID,PUB_ID, ANY_ARGS) );**
                            }
    
                            private const BROWSERAPI_URL_BASE: String = "http://airdownload.adobe.com/air/browserapi";
                            private var _loader:Loader;
                            private var _air:Object;
                    ]]>
            </fx:Script>
    
    
            <s:Button id="launchButton" x="10" y="175" label="Launch Application"
                              click="onButtonClicked(event)" enabled="false"/>
    
    </s:Application>
    

    Please replace the items between **