Flash编程实例:开发广告播放器
制作广告播放器
1.图层介绍如下:
在"background"图层中,放置广告播放器的背景;
在"label"图层中,设置帧标签,方便帧的跳转;
在"as"图层中,放置相应的加载、播放代码等,主要包含四个空白关键帧,第2帧用于加载xml文件,并把其中的数据保存一个对象中。第10帧加载css文件,同样把信息保存在一个对象中,第20帧主要是与播放相关的代码,如载入广告文件,切换效果等。
2、编写加载xml文件的代码:
| stop(); import fc.load.* import mx.utils.Delegate; var pic = new Object(); //保存图片信息的对象 var xmlData = new Xml(); xmlData.load("myinfo.xml"); xmlData.addEventListener("onComplete", Delegate.create(this, loadComplete)); xmlData.addEventListener("onProgress", Delegate.create(this, loadPorgress)); function loadComplete(obj) { var readxml = obj.value.firstChild; pic.path = readxml.attributes.baseURL; //图片路径 pic.time = readxml.attributes.delayTime; //图片延迟出现时间 pic.list = []; for (var i = 0; i<readxml.childNodes.length; i++) { pic.list[i] = new Object(); pic.list[i].id = readxml.childNodes[i].attributes.id; //索引读取 pic.list[i].name = readxml.childNodes[i].attributes.Name; //图片名读取 pic.list[i].info = readxml.childNodes[i].firstChild; //文字信息 //trace(pic.path+pic.list[i].name); } delete xmlData; gotoAndPlay("css"); } function loadPorgress(obj) { //trace("loading"); } |
3、编写加载css文件的代码
| stop(); import fc.load.Css; import mx.utils.Delegate; var style = new Object(); var cssData:Css = new Css(); cssData.load("styles.css"); cssData.addEventListener("onComplete", Delegate.create(this, loadComplete)); cssData.addEventListener("onProgress", Delegate.create(this, loadPorgress)); function loadComplete(obj) { style = obj.value; gotoAndStop("pic"); delete cssData; } function loadPorgress(obj) { //loading } |
| stop(); import fc.load.Movie; import mx.utils.Delegate; import mx.transitions.*; import mx.transitions.easing.*; var myTransitionManager:TransitionManager; var index:Number = 0; var time:Number = 0; var _timeID:Number = 0; var alpha = 10; var showText = true; init(); //加载外部jpg文件 function init() { var picData:Movie = new Movie(this.createEmptyMovieClip("picmc", 1)); picData.load(pic.path+pic.list[index].name); picData.addEventListener("onComplete", Delegate.create(this, loadComplete)); picData.addEventListener("onProgress", Delegate.create(this, loadPorgress)); } //加载完成函数 function loadComplete(obj) { picmc.onEnterFrame = function() { if (this._width != 0) { delete this.onEnterFrame; //添加过渡效果 var myTransitionManager:TransitionManager = new TransitionManager(picmc); myTransitionManager.startTransition({type:PixelDissolve, direction:Transition.IN, duration:0.5, easing:None.easeNone, xSections:20, ySections:20}); var myListener:Object = new Object(); myListener.allTransitionsInDone = function(eventObj:Object) { setText(); }; myTransitionManager.addEventListener("allTransitionsInDone", myListener); } }; } function loadPorgress(obj) { } //设置广告说明文字 function setText() { this.createEmptyMovieClip("textmc", 2); textmc.createEmptyMovieClip("mc", 2); createBg(textmc.mc, 0, 233, 200, 20); textmc.createTextField("showInfo", 1, 0, 0, 0, 0); with (textmc) { showInfo.wordWrap = false; showInfo.html = true; showInfo.autoSize = true; showInfo.styleSheet = style; showInfo.htmlText = pic.list[index].info; var str = showInfo.text; showInfo.text = str; showInfo._x = (200-showInfo._width)/2; showInfo._y = 233; } this.createTextField("showTime", 3, 0, 0, 0, 0); showTime.autoSize = true; showTime.text = pic.time+"s"; _timeID = setInterval(this, "delayFunc", 1000); } //文字背景 function createBg(mc, sx, sy, w, h) { mc.beginFill(0x333333, 40); //mc.lineStyle(1); mc.moveTo(sx, sy); mc.lineTo(sx+w, sy); mc.lineTo(sx+w, sy+h); mc.lineTo(sx, sy+h); mc.lineTo(sx, sy); mc.endFill(); } //每张广告展示的时间设置 function delayFunc() { var temptime = pic.time-time; showTime.text = temptime+"s"; if (time>=pic.time) { clearInterval(_timeID); time = 0; //消失 var myTransitionManager:TransitionManager = new TransitionManager(picmc); myTransitionManager.startTransition({type:PixelDissolve, direction:Transition.OUT, duration:0.5, easing:None.easeNone, xSections:20, ySections:20}); var myListener:Object = new Object(); myListener.allTransitionsOutDone = function(eventObj:Object) { index++; if (index>=pic.list.length) { index = 0; } init(); }; myTransitionManager.addEventListener("allTransitionsOutDone", myListener); } time++; } |

