⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmf开发指南2

📁 jmf开发指南
💻
字号:
2.0 范例:创建一个能播放媒体文件的Applet下面这个例子主要演示怎样用applet创建一个可以播放MPEG 影片的Java Media Player 。当然,它同样适用于其他类型的媒体流。在这个例子中,播放器在浏览器的applet空间里呈现,如果我们写的是application,则需要创建一个窗口来显示Player组件。注意:下边的例子只是一个MediaPlayer的简单演示,没有做任何错误处理。如果要做一个完整的播放器,可以参考"Appendix A: Java Media Applet" on page 37.2.1 PlayerApplet概述APPLET 标签用来把 PlayerApplet插入到HTML文件中去,WIDTH和HEIGHT属性确定了applet在浏览器窗口中的大小。PARAM标签用来标识要播放的文件。PlayerApplet可以用以下代码插入:<APPLET CODE=ExampleMedia.PlayerApplet WIDTH=320 HEIGHT=300>    <PARAM NAME=FILE VALUE="Astrnmy.mpg"></APPLET>当我们打开一个包含PlayerApplet的网页,applet会自动加载并在指定的空间里呈现出来。播放器会自动播放一次指定的MPEG影片,用户可以使用缺省的控件来停止、开始活重播影片。如果播放器正在播放影片时,窗口被关闭,播放器会自动停止并释放它所使用的资源。PlayerApplet继承Applet类并实现ControllerListener接口,并定义以下5个方法:init: 使用PARAM标签中定义的参数创建Player,并且把PlayerApplet 注册为Player的contoller listener,以便接受Player抛出的事件。(当 Player抛出事件时,PlayerApplet的controllerUpdate方法会被调用)    *      start: PlayerApplet 开时后启动Player    *      stop: 当playerApplet停止的时候,停止Player。    *      destroy:当PlayerApplet被移除时,关闭Player    *      controllerUpdate:响应Player事件,显示Player的可视组件。范例代码如下:PlayerApplet.java:package ExampleMedia;import java.applet.*;import java.awt.*;import java.net.*;import javax.media.*;public class PlayerApplet extends Applet implements ControllerListener {   Player player = null;   public void init() {      setLayout(new BorderLayout());      String mediaFile = getParameter("FILE");      try {         URL mediaURL = new URL(getDocumentBase(), mediaFile);         player = Manager.createPlayer(mediaURL);         player.addControllerListener(this);      }      catch (Exception e) {         System.err.println("Got exception "+e);      }   }   public void start() {      player.start();   }   public void stop() {      player.stop();      player.deallocate();   }   public void destroy() {      player.close();   }   public synchronized void controllerUpdate(ControllerEvent event) {      if (event instanceof RealizeCompleteEvent) {         Component comp;         if ((comp = player.getVisualComponent()) != null)            add ("Center", comp);         if ((comp = player.getControlPanelComponent()) != null)            add ("South", comp);                    validate();      }   }}2.3初始化AppletApplet启动时,init方法会自动被调用,在PlayerApplet中,我们可以覆盖了init方法 来执行以下任务:   1.      获取applet的FILE参数   2.      使用FILE参数来定位媒体文件,并且创建一个URL对象来描述这个文件。   3.      调用Manager.createPlayer,传入媒体文件的URL来创建一个Player。   4.      通过Player的addControllerListener方法,将applet注册为player的controller listener. 当player抛出媒体事件时,PlayerApplet的controllerUpdate方法将为被调用。这种 消息监听机制让我们能控制Player在各个状态间过渡,确保Player能够处理用户的请求。public void init() {   setLayout(new BorderLayout());    // 1. 获取文件参数  String mediaFile = getParameter("FILE");  try {     // 2. 从文件参数创建 URL 对象. URL 类在java.net包中      URL mediaURL = new URL(getDocumentBase(), mediaFile);     // 3. 用URL创建一个Player对象     player = Manager.createPlayer(mediaURL);     // 4. 把 PlayerApplet 加为Player的controller listener      player.addControllerListener(this);  }   catch (Exception e) {     System.err.println("Got exception "+e);  }}2.4 控制PlayerApplet类定义了start和stop方法。着两个分别在网页打开和关闭的时候调用。重载这两个方法可以定义applet开启和关闭时的动作。PlayerApplet 的start调用了Player的start:public void start() { player.start();} 类似的,stop方法则停止并释放Playerpublic void stop() { player.stop(); player.deallocate();}Deallocate(释放)Player 意味着释放Player启动时所调用的资源。如果Player占用了硬件设备,释放后其他Player方能使用这个设备。applet退出时会,destory方法会被调用以便处置applet创建的资源。PlayerApplet重载了destroy方法来关闭Player,Player.close会释放所有资源并永久关闭player.public void destroy() { player.close();}2.5 响应媒体事件PlayerApplet把自己注册为Player的ControllerListener来接收媒体事件。他实现了controllerUpdate方法,可以在Player 抛出事件时 自动被调用。PlayerApplet只响应一种事件- RealizeCompleteEvent.当Player抛出这个事件时,PlayerApplet显示Player的可视组件。public synchronized void controllerUpdate(ControllerEvent event){   if (event instanceof RealizeCompleteEvent) {      Component comp;      if ((comp = player.getVisualComponent()) != null)         add ("Center", comp);              if ((comp = player.getControlPanelComponent()) != null)         add ("South", comp);      validate();   }在player实现(Realized)之前,用户界面组件是不能被显示的。一个未实现(Unrealized)的Player还没有获取到关于媒体的足够信息来提供给用户界面组件。PlayerApplet等待Player抛出RealizeCompleteEvent,然后才把可视组件和控制面板添加到applet容器来显示他们。调用validate是为了出发布局管理器更新界面来显示新的组件。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -