Files
2018-12-03 17:31:53 +08:00

266 lines
6.9 KiB
ActionScript

package
{
import com.greensock.plugins.EndArrayPlugin;
import com.greensock.plugins.FramePlugin;
import com.greensock.plugins.TransformAroundCenterPlugin;
import com.greensock.plugins.TweenPlugin;
import com.yy.vip.pk.base.components.MyAlert;
import com.yy.vip.pk.effect.service.GiftService;
import com.yy.vip.pk.service.AppService;
import com.yy.vip.pk.service.BaseService;
import com.yy.vip.pk.service.JsService;
import com.yy.vip.pk.util.JSONUtil;
import com.yy.vip.pk.util.Tracer;
import com.yy.vip.pk.view.AppView;
import com.yy.vip.pk.view.module.entereffect.EnterEffectUtil;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.external.ExternalInterface;
import flash.net.LocalConnection;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.system.Capabilities;
import flash.system.Security;
import flash.utils.clearInterval;
import flash.utils.getTimer;
import flash.utils.setInterval;
import org.flexlite.domCore.Injector;
import org.flexlite.domUI.components.Alert;
import org.flexlite.domUI.core.Theme;
import org.flexlite.domUI.events.CloseEvent;
import org.flexlite.domUI.managers.SystemManager;
import org.flexlite.domUI.skins.themes.VectorTheme;
[SWF(frameRate="20")]
public class main extends Sprite
{
private var appView:AppView;
private var _configXML:Object;
private var _commonXML:Object;
private var _giftXML:Object;
private var _enterXML:Object;
public function main()
{
super();
Security.allowDomain('*');
Security.allowInsecureDomain("*");
if(stage)
{
initStage();
}
else
{
addEventListener(Event.ADDED_TO_STAGE,initStage);
}
}
public function get enterXML():Object
{
return _enterXML;
}
public function set enterXML(value:Object):void
{
_enterXML = value;
BaseService.getInstance().enterXML = _enterXML;
_enterXMLFlag = true;
this.commit();
}
public function get giftXML():Object
{
return _giftXML;
}
public function set giftXML(value:Object):void
{
_giftXML = value;
BaseService.getInstance().giftXML = _giftXML;
_giftXMLFlag = true;
this.commit();
}
public function get configXML():Object
{
return _configXML;
}
public function set configXML(value:Object):void
{
_configXML = value;
BaseService.getInstance().configXML = value;
_configFlag = true;
this.commit();
}
public function get commonXML():Object
{
return _commonXML;
}
public function set commonXML(value:Object):void
{
_commonXML = value;
BaseService.getInstance().commonXML = value;
BaseService.getInstance().bgXML = value.bgs;
_commonConfigFlag = true;
this.commit();
}
private function commit():void
{
if(_enterXMLFlag && _giftXMLFlag && _configFlag && _initStageFlag && _commonConfigFlag)
{
BaseService.getInstance().registAppService( 1,AppService.getInstance());
GiftService.getInstance().initConfig();
BaseService.getInstance().initCommon();
EnterEffectUtil.initEnterEffect();
initApp();
}
}
private function initStage(event:Event = null):void
{
BaseService.getInstance().stage = stage;
var localDomainLC:LocalConnection = new LocalConnection();
var domainName :String= localDomainLC.domain;
BaseService.getInstance().domainName = domainName;
TweenPlugin.activate([TransformAroundCenterPlugin]);
TweenPlugin.activate([FramePlugin]);
TweenPlugin.activate([EndArrayPlugin]);
Injector.mapClass(Theme,VectorTheme);
removeEventListener(Event.ADDED_TO_STAGE,initStage);
stage.addEventListener(Event.RESIZE,resizeHandler);
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
_initStageFlag = true;
this.commit();
}
private var _w:Number;
private var _h:Number;
private var _configFlag:Boolean;
private var _initStageFlag:Boolean;
private var _enterXMLFlag:Boolean;
private var _giftXMLFlag:Boolean;
private var _commonConfigFlag:Boolean;
public function initApp():void{
Tracer.debugLog("Capabilities.os : " + Capabilities.os,Tracer.SYS_LOG,true);
Tracer.debugLog("PKCONFIG::MODE : " + PKCONFIG::MODE,Tracer.SYS_LOG,true);
BaseService.getInstance().PKCONFIG_MODE = PKCONFIG::MODE;
appView = new AppView();
addChild(appView);
var sm :SystemManager = new SystemManager();
addChild(sm);
checkSize();
//checkUpdateVer();
try{
ExternalInterface.call("mainLoadComplete");
}
catch(e:Error)
{
}
}
private var curReleaseVer:String;
private var tchannelLoader:URLLoader;
private function checkUpdateVer():void
{
if(!tchannelLoader)
{
tchannelLoader = new URLLoader();
tchannelLoader.addEventListener(Event.COMPLETE,loadPubVerHandler);
tchannelLoader.addEventListener(IOErrorEvent.IO_ERROR,loadPubVerErrorHandler);
tchannelLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,loadPubVerErrorHandler);
}
tchannelLoader.load(new URLRequest("http://show.vip.yy.com/clientpkgame/config_tchannel.txt?t="+getTimer()));
}
protected function loadPubVerErrorHandler(event:Event):void
{
clearInterval(_checkforceUpdateVerIt);
}
protected function loadPubVerHandler(event:Event):void
{
var urlLoader:URLLoader = event.currentTarget as URLLoader;
var str : String = urlLoader.data;
var curVer:String;
var forceupdate:uint;
if(str)
{
var data:Object = JSONUtil.decode(str);
forceupdate = data.forceupdate;
if((!data.tests || data.tests.length == 0) && data.local == false)
{
curVer = data.release;//全量版本 + 线上的才会有强制升级功能
}
}
if(curVer)//全量版本才会有强制升级功能
{
if(!isStartCheckForceUpdateVer)
{
curReleaseVer = data.release;
if(curReleaseVer)
{
_checkforceUpdateVerIt = setInterval(checkForceUpdateVerHandler,1000);
}
}
else
{
if(curReleaseVer && curReleaseVer != curVer && forceupdate == 1)
{
clearInterval(_checkforceUpdateVerIt);
MyAlert.show("发现新版本,是否现在升级?","提示",function handler(event:CloseEvent):void{
if(event.detail == Alert.FIRST_BUTTON)
{
JsService.getInstance().reloadPage();
}
},"立刻升级","下次");
}
}
}
}
private var isStartCheckForceUpdateVer :Boolean = false;
private var _checkforceUpdateVerIt :uint;
private function checkForceUpdateVerHandler():void
{
isStartCheckForceUpdateVer = true;
checkUpdateVer();
}
protected function resizeHandler(event:Event):void
{
checkSize();
}
private function checkSize():void
{
_w = stage.stageWidth;
_h = stage.stageHeight;
if(appView)
{
appView.setSizeWH(_w,_h);
}
}
}
}