?? startupinfo.as
字號(hào):
package com.finetune.apollo.autoupdate
{
import com.finetune.apollo.*;
import flash.events.*;
import flash.filesystem.*;
import flash.net.*;
import mx.core.*;
[Bindable]
public class StartupInfo extends EventDispatcher{
static public const UPDATENEEDED:String="updateneeded";
public var killswitchengage:Boolean=false;
public var localversion:VersionNumber=new VersionNumber();
public var latestversion:VersionNumber=new VersionNumber();
public var remoteversions:Array;
private var __loader:URLLoader;
private var __load_stream:FileStream;
private var __saveurl:String
public function run(url:String):void{
this.__saveurl=url;
this.loadLocalAppData();
}
private function loadRemoteData():void{
this.__loader=new URLLoader();
this.__loader.addEventListener(Event.COMPLETE,handleResult);
this.__loader.addEventListener(IOErrorEvent.IO_ERROR,handleFailure);
var req:URLRequest=new URLRequest(this.__saveurl);
this.__loader.load(req);
}
private function handleResult(event:Event):void{
try{
var xm:XML=XML(this.__loader.data);
trace(xm.toXMLString());
this.processData(xm);
}catch(e:Error){
this.remoteversions=null;
trace("There was a parsing error!");
}
this.dataComplete();
}
private function handleFailure(event:IOErrorEvent):void{
trace("Load Failed");
this.dataComplete();
}
private function dataComplete():void{
if(this.localversion!=null && this.remoteversions!=null){
this.runAutoUpdateComparisons();
}else{
this.proceed();
}
}
private function processData(xm:XML):void{
var killswitch:String=xm.killswitch.engage;
if(killswitch=="true"){
this.killswitchengage=true;
}
var versions:XMLList=xm.versions.version;
var checkversions:Array=new Array();
for(var i:uint=0;i<versions.length();i++){
var v_num_str:String=versions[i].number;
var version:VersionNumber=new VersionNumber(v_num_str);
version.level=versions[i].level;
version.location=versions[i].location;
checkversions.push(version);
}
this.sortVersions(checkversions);
this.remoteversions=checkversions;
trace("Max Version Is:"+checkversions[0].major+":"+checkversions[0].minor+":"+checkversions[0].revision);
}
private function sortVersions(arr:Array):void{
arr.sortOn(new Array("major","minor","revision"),Array.NUMERIC | Array.DESCENDING);
}
private function loadLocalAppData():void{
//try{
//var appfileurl:File=File.applicationDirectory.resolvePath("META-INF/AIR/application.xml");
//trace(appfileurl.nativePath);
//__load_stream=new FileStream();
//__load_stream.open(appfileurl,FileMode.READ);
//var data:String=__load_stream.readUTFBytes(__load_stream.bytesAvailable);
//__load_stream.close();
var i_app:WindowedApplication=Application.application as WindowedApplication;
var data:String=i_app.nativeApplication.applicationDescriptor;
trace("LOCAL DATA:"+data);
this.processLocalAppData(data);
//}catch(e:Error){
// trace("Failed to Load Local Version Info");
//this.localDataLoaded();
//}
}
private function processLocalAppData(data:String):void{
var xm:XML=XML(data);
var versiondata:String=xm.children()[2];
//trace("VERSION DATA>>>"+xm.initialWindow.content);
this.localversion=new VersionNumber(versiondata);
//trace("Local Version:"+this.localversion.major+":"+this.localversion.minor+":"+this.localversion.revision);
this.localDataLoaded();
}
private function localDataLoaded():void{
this.loadRemoteData();
}
private function proceed():void{
this.dispatchEvent(new Event(Event.COMPLETE));
}
private function runAutoUpdateComparisons():void{
this.latestversion=this.remoteversions[0];
var item1:VersionNumber=this.localversion;
var item2:VersionNumber=this.remoteversions[0];
if((item1.major==item2.major && item1.minor==item2.minor && item1.revision==item2.revision) || !item1.hasRealVersionInfo()){
trace("YOU HAVE CURRENT VERSION");
this.proceed();
}else{
var comp_arr:Array=new Array();
comp_arr.push(item1);
comp_arr.push(item2);
this.sortVersions(comp_arr);
if(comp_arr[0]==item2){
trace("YOU NEED UPDATE:"+item1.getVersionString()+":"+item2.getVersionString());
this.dispatchEvent(new Event(UPDATENEEDED));
}else{
trace("YOU HAVE CURRENT VERSION");
this.proceed();
}
}
}
public function runAutoUpdate():void{
var item:VersionNumber=this.remoteversions[0];
if(item.location!=null){
var file:File=FinetuneMyMusicFolder.getFolderForOS().resolvePath("updates/finetunedesktop.air");
var url:String=item.location;
AutoUpdate.get().run(url,file,latestversion.getVersionString());
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -