/* * * @class RMAPlayer * @version 1.1 * @authur Azure * @website http://www.riacn.com * */ import AdsXMLModel; import mx.events.EventDispatcher; import mx.transitions.Tween; import mx.transitions.Fade; import mx.transitions.TransitionManager; import mx.transitions.easing.Regular; class RMAPlayer extends MovieClip { // // Private Property private var _totalAds:Number; private var _currentAd:Number = 0; private var _isSwf:Boolean; private var _adLink:String; private var _ads_xml:AdsXMLModel; private var adsHolder:MovieClip; private var LogoHolder:MovieClip; private var RMALogo:MovieClip; private var adsLoader:MovieClip; private var adsLoaderMc:MovieClip; private var adsButton:MovieClip; private var adsMask:MovieClip; private var loadingBg:MovieClip; private var ctrlMask:MovieClip; private var ctrlPanel:MovieClip; private var adNameTxt:MovieClip; private var _screenSizeX:Number; private var _screenSizeY:Number; private var nowTime:Number; private var intervalID:Number; //set interval,millisecond private var delay:Number = 1000; //set pic ad time length,millisecond private var picTimeLength:Number = 3000; private static var loaderTextFormat:TextFormat = new TextFormat(); private static var adNameTxtFormat:TextFormat = new TextFormat(); private static var _mixin1 = EventDispatcher.initialize(RMAPlayer.prototype); public var addEventListener:Function; public var removeEventListener:Function; private var dispatchEvent:Function; // // Constructor public function RMAPlayer() { _ads_xml = new AdsXMLModel(); } // // Event Handler private function onAdsListLoaded():Void { _totalAds = _ads_xml.getXmlLength(); _isSwf = _ads_xml.getAdType(0); _currentAd = 0; // Ads Container this.createEmptyMovieClip("adsHolder", 2); // Show RMAPlayer LOGO adsHolder.duplicateMovieClip("LogoHolder", 1); LogoHolder.attachMovie("RMALogo", "RMALogo", 2); LogoHolder.RMALogo._x = (_screenSizeX-LogoHolder.RMALogo._width)/2; LogoHolder.RMALogo._y = (_screenSizeY-LogoHolder.RMALogo._height-8)/2; // Creat adsLoader adsHolder.duplicateMovieClip("adsLoader", 12); adsLoader.attachMovie("adsLoader", "adsLoaderMc", 2); adsLoader.adsLoaderMc._x = Math.round((_screenSizeX-adsLoader.adsLoaderMc._width)/2); adsLoader.adsLoaderMc._y = Math.round((_screenSizeY-adsLoader.adsLoaderMc._height+40)/2); // Define Loader Text Format loaderTextFormat.font = "Verdana"; loaderTextFormat.size = 9; loaderTextFormat.align = "center"; loaderTextFormat.color = 0xB6C6D6; // Creat Button this.createEmptyMovieClip("adsButton", 4); adsButton.beginFill(0xFFFFFF, 0); adsButton.lineStyle(0, 0xFFFFFF, 0); adsButton.lineTo(0, _screenSizeY); adsButton.lineTo(_screenSizeX, _screenSizeY); adsButton.lineTo(_screenSizeX, 0); adsButton.endFill(); adsButton._visible = false; // Creat Ads Mask this.createEmptyMovieClip("adsMask", 6); adsMask.beginFill(0x000000, 0); adsMask.lineStyle(0, 0xFFFFFF, 0); adsMask.lineTo(0, _screenSizeY); adsMask.lineTo(_screenSizeX, _screenSizeY); adsMask.lineTo(_screenSizeX, 0); adsMask.endFill(); // Creat ctrlPanel Mask adsMask.duplicateMovieClip("ctrlMask", 7); // Creat Loading Background loadingBg.duplicateMovieClip("ctrlMask", 9); loadingBg._visible = false; // Creat Control Panel this.createEmptyMovieClip("ctrlPanel", 5); ctrlPanel.beginFill(0x556C80, 90); ctrlPanel.lineStyle(0, 0xFFFFFF, 0); ctrlPanel.moveTo(0, _screenSizeY); ctrlPanel.lineTo(_screenSizeX, _screenSizeY); ctrlPanel.lineTo(_screenSizeX, _screenSizeY+20); ctrlPanel.lineTo(0, _screenSizeY+20); ctrlPanel.endFill(); // Set control button ctrlPanel.attachMovie("nextAd", "newNextAd", 11); ctrlPanel.attachMovie("prevAd", "newPrevAd", 12); ctrlPanel.attachMovie("soundCtr", "soundCtr", 13); ctrlPanel.newNextAd._x = _screenSizeX-35; ctrlPanel.newNextAd._y = _screenSizeY+2; ctrlPanel.newPrevAd._x = _screenSizeX-52; ctrlPanel.newPrevAd._y = _screenSizeY+2; ctrlPanel.soundCtr._x = _screenSizeX-18; ctrlPanel.soundCtr._y = _screenSizeY+2; ctrlPanel.newNextAd.onPress = function() { _parent._parent.playNext(); }; ctrlPanel.newPrevAd.onPress = function() { _parent._parent.playPrev(); }; // Define Loader Text Format adNameTxtFormat.font = "Tahoma"; adNameTxtFormat.size = 12; adNameTxtFormat.color = 0xB6C6D6; // Creat AdName Text ctrlPanel.createTextField("adNameTxt", 3, 6, _screenSizeY, _screenSizeX-43, 20); ctrlPanel.adNameTxt.embedFonts = false; ctrlPanel.adNameTxt.selectable = false; // Set CtrlPanel Mask ctrlPanel.setMask(ctrlMask); //load ads loadAd(_currentAd); // Set Mouse Action this.onEnterFrame = function() { setMouseAction(); }; } private function onAdLoaded():Void { if (_isSwf) { showSwfAd(); } else { showPicAd(); } if (_adLink != undefined && _adLink != "") { adsButton._visible = true; adsButton.onRelease = function() { getURL(_parent._adLink, "_blank"); }; } else { adsButton._visible = false; } } private function onAdsMouseOver():Void { var mcTween:Object = new Tween(ctrlPanel, "_y", Regular.easeOut, ctrlPanel._y, -20, 6); } private function onAdsMouseOut():Void { var mcTween:Object = new Tween(ctrlPanel, "_y", Regular.easeOut, ctrlPanel._y, 0, 6); } // // Getter/Setter Method public function set screenSizeX(x:Number):Void { _screenSizeX = x; } public function set screenSizeY(y:Number):Void { _screenSizeY = y; } // // Private Method private function preloader(mc:MovieClip):Void { var adBytesLoaded:Number = mc.getBytesLoaded(); var adBytesTotal:Number = mc.getBytesTotal(); mc._visible = false; var percent:Number = Math.round(adBytesLoaded/adBytesTotal*100); adsLoader.adsLoaderMc._visible = true; adsLoader.adsLoaderMc.gotoAndStop(percent); if (percent == 100 and adBytesLoaded>0) { adsLoader.adsLoaderMc._visible = false; adsLoader.adsLoaderMc.gotoAndStop(1); dispatchEvent({type:"onAdLoaded", target:this}); delete adsLoader.onEnterFrame; mc._visible = true; loadingBg._visible = false; } else { loadingBg._visible = true; } } private function loadAd(i:Number):Void { this.addEventListener("onAdLoaded", this); this.loadAdMovie(i); } //Show SWF Ad private function showSwfAd():Void { adsHolder.gotoAndStop(1); ctrlPanel.newNextAd.enabled = false; ctrlPanel.newPrevAd.enabled = false; //Set Mask adsHolder.setMask(adsMask); //Fade In var tm:TransitionManager = new TransitionManager(adsHolder); var trobj:Object = new Object(); trobj.direction = 0; trobj.duration = 1; var mcFade:Object = new Fade(adsHolder, trobj, tm); mcFade.start(adsHolder, trobj); //Movie Start tm.transitionInDone = function() { tm.content.play(); tm.content._parent.ctrlPanel.newNextAd.enabled = true; tm.content._parent.ctrlPanel.newPrevAd.enabled = true; }; } //Show PIC Ad private function showPicAd():Void { ctrlPanel.newNextAd.enabled = false; ctrlPanel.newPrevAd.enabled = false; //Set Mask adsHolder.setMask(adsMask); //Fade In var tm:TransitionManager = new TransitionManager(adsHolder); var trobj:Object = new Object(); trobj.direction = 0; trobj.duration = 1; var mcFade:Object = new Fade(adsHolder, trobj, tm); mcFade.start(adsHolder, trobj); //Movie Start tm.transitionInDone = function() { tm.content._parent.ctrlPanel.newNextAd.enabled = true; tm.content._parent.ctrlPanel.newPrevAd.enabled = true; }; nowTime = getTimer(); this.intervalID = setInterval(this, "showPic", 20, nowTime, picTimeLength); } private function showPic(a:Number, b:Number):Void { if ((getTimer()-a)>b) { movieCompleted(); clearInterval(this.intervalID); } updateAfterEvent(); } private function setMouseAction():Void { if (_xmouse>0 and _xmouse<_screenSizeX and _ymouse>0 and _ymouse<_screenSizeY) { onAdsMouseOver(); } else { onAdsMouseOut(); } } private function fadeMov():Void { adsHolder.stop(); ctrlPanel.newNextAd.enabled = false; ctrlPanel.newPrevAd.enabled = false; //Fade Out var tm:TransitionManager = new TransitionManager(adsHolder); var trobj:Object = new Object(); trobj.direction = 1; trobj.duration = 1; var mcFade:Object = new Fade(adsHolder, trobj, tm); mcFade.start(adsHolder, trobj); //Enable Button tm.transitionInDone = function() { tm.content._parent.ctrlPanel.newNextAd.enabled = true; tm.content._parent.ctrlPanel.newPrevAd.enabled = true; }; } // // Public Method public function loadXML(x:String):Void { _ads_xml.load(x); _ads_xml.addEventListener("onAdsListLoaded", this); } public function loadAdMovie(i:Number):Void { var owner:Object = this; adsHolder.loadMovie(_ads_xml.getAdSwfUrl(i)); _isSwf = _ads_xml.getAdType(i); _adLink = _ads_xml.getAdLink(i); if (_isSwf) { adsHolder.gotoAndStop(1); } //ctrlPanel text ctrlPanel.adNameTxt.text = _ads_xml.getAdName(i); ctrlPanel.adNameTxt.setTextFormat(adNameTxtFormat); adsLoader.onEnterFrame = function() { owner.preloader(owner.adsHolder); }; } public function movieCompleted():Void { if (_currentAd<_totalAds-1) { _currentAd++; } else { _currentAd = 0; } fadeMov(); nowTime = getTimer(); this.onEnterFrame = function() { if ((getTimer()-nowTime)>delay) { loadAd(_currentAd); delete this.onEnterFrame; // Set Mouse Action this.onEnterFrame = function() { setMouseAction(); }; } }; } public function playNext():Void { movieCompleted(); clearInterval(this.intervalID); } public function playPrev():Void { clearInterval(this.intervalID); if (_currentAd>0) { _currentAd--; } else { _currentAd = _totalAds-1; } fadeMov(); nowTime = getTimer(); this.onEnterFrame = function() { if ((getTimer()-nowTime)>delay) { loadAd(_currentAd); delete this.onEnterFrame; // Set Mouse Action this.onEnterFrame = function() { setMouseAction(); }; } }; } }