package com.yy.vip.pk.yyshow { import com.yy.vip.pk.event.JsCallEvent; import com.yy.vip.pk.service.JsService; import com.yy.vip.pk.util.DeposeUtil; import com.yy.vip.pk.util.UrlUtil; import flash.display.Loader; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.events.SecurityErrorEvent; import flash.net.URLRequest; import flash.net.navigateToURL; import flash.system.Security; import flash.text.TextField; import flash.utils.clearTimeout; import flash.utils.setTimeout; [SWF(width=260,height=75,frameRate=15)] public class YYShowBrocast extends MovieClip { private var it : uint private var logoLoader :Loader; private var bgLoader:Loader; private var bgSprite:Sprite; private var label1:TextField; private var label2:TextField; private var iconLoader:Loader; private var label3:TextField; private var label4:TextField; private var data:Object; private var mainSprite:Sprite; private var logoSprite:Sprite; private var bgLoaderUI:Sprite; private var iconLoaderUI:Sprite; public function YYShowBrocast() { Security.allowDomain("*"); Security.allowInsecureDomain("*"); if(stage) initHandler(); else this.addEventListener(Event.ADDED_TO_STAGE,this.initHandler); } protected function initHandler(event:Event = null):void { this.visible = false; bgSprite = new Sprite(); this.addChild(bgSprite); logoSprite = new Sprite(); bgSprite.addChild(logoSprite); mainSprite = new Sprite(); mainSprite.x = 65; bgSprite.addChild(mainSprite); label1 = new TextField(); label2 = new TextField(); label3 = new TextField(); label4 = new TextField(); mainSprite.addChild(label1); mainSprite.addChild(label2); mainSprite.addChild(label3); mainSprite.addChild(label4); this.addEventListener(MouseEvent.CLICK,clickHandler); JsService.getInstance().addEventListener(JsCallEvent.CALL_BY_MAIN_SWF,callByMainSwfHandler); JsService.getInstance().start(JsService.PUBLIC_TOP_YYSHOW_SWF_ID); try{ this.stage.addEventListener(MouseEvent.RIGHT_CLICK,rightClickHandler); } catch(e:Error) { } } protected function rightClickHandler(event:MouseEvent):void { event.stopImmediatePropagation(); } protected function clickHandler(event:MouseEvent):void { if(this.data && this.data.url) JsService.getInstance().callMainSwf(JsService.CMD_SHOW_ETIT_NOTICE_PANEL,JsService.PUBLIC_TOP_YYSHOW_SWF_ID,this.data.url); } protected function callByMainSwfHandler(event:JsCallEvent):void { var data:Object = event.data; this.data = data; if(event.cmd == JsService.CMD_BROCAST_YYSHOW) { this.visible = false; bgSprite.graphics.clear(); bgSprite.graphics.beginFill(data.bgColor,1); bgSprite.graphics.drawRect(0,0,260,75); bgSprite.graphics.endFill(); clearLoader(); var bgUrl:String = data.bgUrl; if(!bgLoaderUI) { bgLoaderUI = new Sprite() bgSprite.addChildAt(bgLoaderUI,0); } if(!bgLoader){ bgLoader = new Loader(); bgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,bgCompleteHandler) bgLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); bgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); bgLoaderUI.addChild(bgLoader); } if(bgUrl.indexOf("http")!=-1 && (bgUrl.indexOf(".png")!=-1 || bgUrl.indexOf(".jpg")!=-1)) bgLoader.load(new URLRequest(UrlUtil.checkHttps(bgUrl))); label1.width = 80; label1.x = 15; label1.y = 10; label1.textColor = uint(data.msgInfo.tip1Color); label1.text = data.msgInfo.tip1; if(!iconLoaderUI) { iconLoaderUI = new Sprite() mainSprite.addChild(iconLoaderUI); } if(!iconLoader){ iconLoader = new Loader(); iconLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); iconLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); iconLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoaderComplete); iconLoaderUI.addChild(iconLoader); } iconLoaderUI.x = label1.x + label1.textWidth + 20; iconLoaderUI.y = 10; if(data.msgInfo.img ) { var iconUrl:String = data.msgInfo.img; if(iconUrl.indexOf("http")!=-1 && (iconUrl.indexOf(".png")!=-1 || iconUrl.indexOf(".jpg")!=-1)) iconLoader.load(new URLRequest(UrlUtil.checkHttps(iconUrl))); } label2.width = 90; label2.x = iconLoaderUI.x + 30; label2.y = 10; label2.textColor = uint(data.msgInfo.nickColor); label2.text = data.msgInfo.nick; label3.width = 90; label3.x = 15; label3.y = 36; label3.textColor = uint(data.msgInfo.roleNameColor); label3.text = data.msgInfo.roleName; label4.width = 90; label4.x = label3.x + label3.textWidth + 5; label4.y = 36; label4.textColor = uint(data.msgInfo.roleTipColor); label4.text = data.msgInfo.roleTip; if(data.logo) { if(!logoLoader) { logoLoader = new Loader(); logoLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); logoLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); logoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,logoLoaderCompleteHandler); } if(data.logo.indexOf("http")!=-1 && (data.logo.indexOf(".png")!=-1 || data.logo.indexOf(".jpg")!=-1)) logoLoader.load(new URLRequest(UrlUtil.checkHttps(data.logo))); } } } protected function logoLoaderCompleteHandler(event:Event):void { if(logoLoader && logoSprite) { logoLoader.x = 3; logoLoader.y = 3; logoLoader.scaleX = logoLoader.scaleY = 0.85; logoSprite.addChild(logoLoader); } if(logoLoader && logoLoader.contentLoaderInfo) { logoLoader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); logoLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); logoLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,logoLoaderCompleteHandler); } } protected function iconLoaderComplete(event:Event):void { if(iconLoaderUI && iconLoader) iconLoaderUI.addChild(iconLoader); if(iconLoader) { iconLoader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); iconLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); iconLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,iconLoaderComplete); } } protected function bgCompleteHandler(event:Event):void { if(!bgLoader) return; bgLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,bgCompleteHandler) bgLoader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); bgLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); this.mouseEnabled = this.buttonMode = this.useHandCursor = this.data.url?true:false; JsService.getInstance().showYYShowDiv(); this.visible = true; try{ var contentWidth:Number = bgLoader.contentLoaderInfo.width; var contentHeight:Number = bgLoader.contentLoaderInfo.height; var rx:Number = 260/ contentWidth; var ry:Number = 75 / contentHeight; bgLoaderUI.scaleY = ry; bgLoaderUI.scaleX = rx; clearTimeout(it); it = setTimeout(function ():void{ depose(); } ,data.showTime * 1000); } catch(e:Error){ depose(); } } private function depose():void { clearTimeout(it); clearLoader(); JsService.getInstance().hideYYShowDiv(); } protected function ioErrorHandler(event:Event):void { } private function clearLoader():void { try{ this.visible = false; clearTimeout(it); this.mouseEnabled = this.buttonMode = this.useHandCursor = false; DeposeUtil.removeFromStage(bgLoader); if(bgLoader) { bgLoader.unloadAndStop(true); bgLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,bgCompleteHandler) bgLoader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); bgLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); } bgLoader = null; DeposeUtil.removeFromStage(iconLoader); if(iconLoader) { iconLoader.unloadAndStop(true); iconLoader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); iconLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); iconLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,iconLoaderComplete); } iconLoader = null; DeposeUtil.removeFromStage(logoLoader); if(logoLoader) { logoLoader.unloadAndStop(true); logoLoader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,ioErrorHandler); logoLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); logoLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,logoLoaderCompleteHandler); } logoLoader = null; } catch(e:Error){ } } } }