视图模块的作用就是根据从Model处获得的数据,把合适的界面显示个用户,并把接收到的用户输入传递给Controller.
AbstractView
AbstractView的属性
- controller:控制器.用来向控制器发送用户输入消息
- config:设置参数
- feeder:维持播放列表
AbstractView的方法:
- AbstractView:构造函数,初始化controller,congfig,feeder
- getUpdate:从Model处获得更新通知(state,load,time,size,volume,datarate)
- setState:由子类实现具体操作
- setLoad:
- setTime:
- setItem:
- setSize:
- setVolume:
- setDatarate:
- sendEvent:向controller发送更新消息
AS Code
private function sendEvent(typ:String,prm:Number) { controller.getEvent(typ,prm); };
DisplayView
DisplayView的属性
- imageLoader:加载器
- currentItem:当前对象的索引
- itemSize:
- thumbSize:
- startPos:开始位置
DisplayView类的方法
- DisplayView:构造函数.它会监视舞台尺寸的变化.构造函数里还会根据参设置播放窗口的尺寸
- setColorsClick:设置颜色和点击事件.
- setDimensions:设置尺寸
- setState:设置状态
- setSize:保存大小信息,并缩放影片
- scaleClip:缩放目标.它会根据overstretch的值决定如何缩放.
- setItem:加载预览图
- 当舞台窗口变动后做响应的调整
- onFullScreen:当从全屏还原的时候重设尺寸
AS Code
public function onFullScreen(fs:Boolean) { if(fs == false) { setDimensions(); } };
- firstClick:捕获第一次点击.隐藏掉静音标志和播放标志,并定义播放窗口的点击事件:
AS Code
private function firstClick() { var ref = this; var tgt = config["clip"].display; tgt.playicon._visible = false; tgt.muteicon._visible = false; if(config["linkfromdisplay"] == "true") { tgt.back.onRelease = function() { ref.sendEvent("getlink",ref.currentItem); }; } else { tgt.back.onRelease = function() { ref.sendEvent("playpause",1); }; } };
ControlbarView
ControlbarView的属性
- currentItem:当前播放对象的索引
- barWidths:控制条的宽度
- itemLength:当前播放对象的长度
- itemProgress:当前播放对象的进度
- wasLoaded:当缓冲的时候不重复缩放加载进度条
- hideInt:延时隐藏
ControlbarView的方法:
- ControlbarView:构造函数.主要是要设置尺寸和点击事件,以及监视舞台和播放列表.
- setColorsClicks:设置颜色和点击事件
- setDimensions:设置尺寸
- setState:跟换播放暂停标志
- setTime:设置时间信息(播放时间,剩余时间)
- setItem:设置当前对象的透明度
- setLoad:设置加载进度条
- setVolume:设置音量标识
- onResize:监视舞台缩放,并调整位置
- onFullScreen:当还原时重设尺寸
- hideBar:隐藏控制条
- onMouseMove:鼠标移动的时候显示控制条
- onFeedUpdate:当列表更新时设置尺寸
PlaylistView
PlaylistView的属性
- thumbLoader:加载预览图
- listScroller:滚动条
- listRight:播放列表的位置
- listWidth:播放列表的高度
- listLength:播放文件数
- currentItem:当前播放对象的索引
- currentTime:记录当前时间.
PlaylistView的方法:
- PlaylistView:构造函数
- setButtons:当播放列表加载完后设置播放列表的尺寸和颜色.
- setItem:把新对象设置成当前播放的对象
- setTime:
- onFullScreen:
AS Code
public function onFullScreen(fs:Boolean) { if(listScroller == undefined) { break; } else if(fs == true) { config["clip"].scrollbar._visible = false; } else { config["clip"].scrollbar._visible = true; } };
- onFeedUpdate:当feed更新的时候绘制一个新的播放列表
InputView
InputView主要是用来接收键盘输入的.InputView的属性:
- currentVolume:当前音量
- currentTime:已播放的时间
InputView的方法:
- InputView:构造函数,监视键盘输入
- setTime:设置时间
- setTime:设置音量
- onKeyDown:监视键盘按键事件
AS Code
public function onKeyDown() { if (Key.getCode() == 32) { sendEvent("playpause"); } else if (Key.getCode() == 37) { if(feeder.feed.length == 1) { sendEvent("scrub",currentTime-15); } else { sendEvent("prev"); } } else if (Key.getCode() == 39) { if(feeder.feed.length == 1) { sendEvent("scrub",currentTime+15); } else { sendEvent("next"); } } else if (Key.getCode() == 38) { sendEvent("volume",currentVolume+10); } else if (Key.getCode() == 40) { sendEvent("volume",currentVolume-10); } else if (Key.getCode() == 77) { sendEvent("volume",0); } };
EqualizerView
EqualizerView是用来显示模拟的声音波形的.EqualizerView的属性:
- eqClip:绘制波形的MC
- currentVolume:当前音量
- eqStripes:显示的条纹数
EqualizerView的方法:
- EqualizerView:构造函数.
- setupEQ:设置EQ
- drawEQ:绘制波形
AS Code
private function drawEqualizer(tgt:MovieClip) { tgt.clear(); tgt.beginFill(0x000000, 100); tgt.moveTo(0,0); var h = Math.round(currentVolume/4); for (var j=0; j< eqStripes; j++) { var z = random(h)+h/2 + 2; if(j == Math.floor(eqStripes/2)) { z = 0; } tgt.lineTo(j*6,-1); tgt.lineTo(j*6,-z); tgt.lineTo(j*6+4,-z); tgt.lineTo(j*6+4,-1); tgt.lineTo(j*6,-1); } tgt.lineTo(j*6,0); tgt.lineTo(0,0); tgt.endFill(); };
- setVolume:记录音量,为绘制波形图用.
- setState:只有在播放的时候才显示波形图
- onFullScreen:全屏的时候隐藏波形图
CaptionsView
CaptionsView是用来显示字幕的.CaptionsView的属性:
- parser:解析字幕用的
- captions:字幕
- currentTime:已播放的时间
- clip:放字幕的MC
- captionate:是否加字幕
- capTime:
- capTrack:
CaptionsView的方法:
- CaptionsView:构造函数,初始化变量并解析字幕.
- setDimensions:设置尺寸
- setItem:播放新的文件时显示对应的字幕
- setTime:设置时间进度
- setCaption:显示字幕
- onCaptionate:输入字幕
- onResize:重设大小.
- onFullScreen:退出全屏时重设大小.
AudioView
AudioView是用来播放背景音乐的.AudioView类把控制背景音乐的操作集合在了它自己的内部,而不是交给Controller处理.AudioView的属性:
- audioClip:绑定声音的MC
- audioObject:声音对象
- currentItem:当前对象的索引
- currentTime:已播放的时间
- stopTime:上次停止的位置
- audioTime:当前音频的时间
- currentState:播放状态
- isLoaded:是否加载完
- sync:是否同步
AudioView的方法:
- AudioView:构造函数.
- setItem:设置新的播放对象
- setState:设置播放状态
AS Code
private function setState(stt:Number) { currentState = stt; if(sync == false) { return; } if(stt == 2 && config['useaudio'] == "true") { audioObject.start(currentTime); } else { audioObject.stop(); } };
我们看到,这个控制是有视图自己完成的,并没有交给Controller处理. - setTime:设置时间.
JavascriptView
JavascriptView的作用是当有更新时通知JavaScript.JavascriptView的属性:
- loads:加载的值
- elaps:播放值
- remain:剩余值
JavascriptView的方法:
- JavascriptView:构造函数.注册sendEvent
- getUpdate:发送更新通知.
CallbackView
CallbackView的作用是向服务器脚本发送一些消息.CallbackView的属性:
- currentItem:当前播放对象的索引
- varsObject:LoadVars对象
- playsentInt:
- startStamp:时间戳
CallbackView的方法:
- CallbackView:构造函数.
- setState:当状态改变时发送
- setItem:更换播放对象
- sendVars:发送数据
OverlayView
OverlayView的属性:
- overlay:banner MC
- loader:加载器
- state:是否显示
OverlayView的方法:
- OverlayView:构造函数
- setDimensions:设置尺寸
- setItem:更换播放对象的同时更换barnner
- setTime:加载或卸载
- setState:设置状态
- onResize:调整窗口大小时调用
- onFullScreen:从全屏还原时调用