Следующий код работает должным образом: когда пользователь нажимает кнопку, установщик автоматически запускается.
<?xml version="1.0" encoding="utf-8"?>
<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="applicationInit(event)">
<fx:Script>
<![CDATA[
import flash.utils.setTimeout;
import mx.events.FlexEvent;
private var airSWF:Object;
private var airSWFLoader:Loader = new Loader();
private var loaderContext:LoaderContext = new LoaderContext();
private function applicationInit(event:FlexEvent):void {
this.loaderContext.applicationDomain = ApplicationDomain.currentDomain;
this.airSWFLoader.contentLoaderInfo.addEventListener(Event.INIT, onAirInit);
this.airSWFLoader.load(new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf"), loaderContext);
}
private function onAirInit(event:Event):void {
this.airSWF = event.target.content;
this.button.addEventListener(MouseEvent.CLICK, installApp);
}
private function installApp(event:MouseEvent):void {
var url:String = "URL HERE";
var runtimeVersion:String = "2.7";
var arguments:Array = ["launchFromBrowser"];
this.airSWF.installApplication(url, runtimeVersion, arguments);
}
]]>
</fx:Script>
<s:Button id="button" label="Download" horizontalCenter="0" verticalCenter="0"/>
</s:Application>
Тем не менее, как ни странно, следующий код не работает должным образом: он не запускаетустановщик при создании.
<?xml version="1.0" encoding="utf-8"?>
<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="applicationInit(event)">
<fx:Script>
<![CDATA[
import flash.utils.setTimeout;
import mx.events.FlexEvent;
private var airSWF:Object;
private var airSWFLoader:Loader = new Loader();
private var loaderContext:LoaderContext = new LoaderContext();
private function applicationInit(event:FlexEvent):void {
this.loaderContext.applicationDomain = ApplicationDomain.currentDomain;
this.airSWFLoader.contentLoaderInfo.addEventListener(Event.INIT, onAirInit);
this.airSWFLoader.load(new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf"), loaderContext);
}
private function onAirInit(event:Event):void {
this.airSWF = event.target.content;
installApp();
}
private function installApp():void {
var url:String = "URL HERE";
var runtimeVersion:String = "2.7";
var arguments:Array = ["launchFromBrowser"];
this.airSWF.installApplication(url, runtimeVersion, arguments);
}
]]>
</fx:Script>
<s:Button id="button" label="Download" horizontalCenter="0" verticalCenter="0"/>
</s:Application>
Я проверил, что функция installApp выполняется.
Почему не работает второй фрагмент кода?Требуется ли взаимодействие с пользователем?Если так, то как обойти это?