Jw Flv Player View模块

视图模块的作用就是根据从Model处获得的数据,把合适的界面显示个用户,并把接收到的用户输入传递给Controller.

AbstractView

jw flv player 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

jw flv player 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

jw flv player ControlbarView类图

ControlbarView的属性

  • currentItem:当前播放对象的索引
  • barWidths:控制条的宽度
  • itemLength:当前播放对象的长度
  • itemProgress:当前播放对象的进度
  • wasLoaded:当缓冲的时候不重复缩放加载进度条
  • hideInt:延时隐藏

ControlbarView的方法:

  • ControlbarView:构造函数.主要是要设置尺寸和点击事件,以及监视舞台和播放列表.
  • setColorsClicks:设置颜色和点击事件
  • setDimensions:设置尺寸
  • setState:跟换播放暂停标志
  • setTime:设置时间信息(播放时间,剩余时间)
  • setItem:设置当前对象的透明度
  • setLoad:设置加载进度条
  • setVolume:设置音量标识
  • onResize:监视舞台缩放,并调整位置
  • onFullScreen:当还原时重设尺寸
  • hideBar:隐藏控制条
  • onMouseMove:鼠标移动的时候显示控制条
  • onFeedUpdate:当列表更新时设置尺寸

PlaylistView

jw flv player 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

jw flv player 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

jw flv player 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

jw flv player captionsView类图

CaptionsView是用来显示字幕的.CaptionsView的属性:

  • parser:解析字幕用的
  • captions:字幕
  • currentTime:已播放的时间
  • clip:放字幕的MC
  • captionate:是否加字幕
  • capTime:
  • capTrack:

CaptionsView的方法:

  • CaptionsView:构造函数,初始化变量并解析字幕.
  • setDimensions:设置尺寸
  • setItem:播放新的文件时显示对应的字幕
  • setTime:设置时间进度
  • setCaption:显示字幕
  • onCaptionate:输入字幕
  • onResize:重设大小.
  • onFullScreen:退出全屏时重设大小.

AudioView

jw flv player 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

jw flv player JavascriptView类图

JavascriptView的作用是当有更新时通知JavaScript.JavascriptView的属性:

  • loads:加载的值
  • elaps:播放值
  • remain:剩余值

JavascriptView的方法:

  • JavascriptView:构造函数.注册sendEvent
  • getUpdate:发送更新通知.

CallbackView

jw flv player CallbackView类图

CallbackView的作用是向服务器脚本发送一些消息.CallbackView的属性:

  • currentItem:当前播放对象的索引
  • varsObject:LoadVars对象
  • playsentInt:
  • startStamp:时间戳

CallbackView的方法:

  • CallbackView:构造函数.
  • setState:当状态改变时发送
  • setItem:更换播放对象
  • sendVars:发送数据

OverlayView

jw flv player OverlayView类图

OverlayView的属性:

  • overlay:banner MC
  • loader:加载器
  • state:是否显示

OverlayView的方法:

  • OverlayView:构造函数
  • setDimensions:设置尺寸
  • setItem:更换播放对象的同时更换barnner
  • setTime:加载或卸载
  • setState:设置状态
  • onResize:调整窗口大小时调用
  • onFullScreen:从全屏还原时调用