Topic: 用Java制作的Flash播放器

  Print this page

1.用Java制作的Flash播放器 Copy to clipboard
Posted by: ljy0000
Posted on: 2005-08-07 14:46

究竟怎样在Java中播放Flash呢,看看我作的Flash播放器你就知道了,学会了后别忘了谢谢我哦!

运行方法: 解开压缩包,双击“run.cmd”文件即可。

FlashPlayer.zip (136.41k)

2.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: linux_china
Posted on: 2005-08-07 15:07

JDIC都用上啦,强! https://jdic.dev.java.net/

3.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: ljy0000
Posted on: 2005-08-07 16:03

多谢linux_china哥哥夸奖,不过刚才发现一个错误,在RUN.CMD文件中有错误。我写的是我自己的Java路径,大家改成自己的Java路径吧。

4.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: YuLimin
Posted on: 2005-08-08 10:12

HoHoSmile学习

The JDesktop Integration Components (JDIC) project aims to make Java™ technology-based applications ("Java applications") first-class citizens of current desktop platforms without sacrificing platform independence. Its mission is to enable seamless desktop/Java integration.

JDIC provides Java applications with access to functionalities and facilities provided by the native desktop. It consists of a collection of Java packages and tools. JDIC supports a variety of features such as embedding the native browser, launching the desktop applications, creating tray icons on the desktop, registering file type associations, creating JNLP installer packages, etc. Many new features are contributed as incubator projects from the community.

See the initial JDIC Overview article for a more thorough read on the project. Read the two-part sketchbook Look, feel, and behave like a native application and Save your screen, with Java! by Joshua Marinacci for an overall introduction and evaluation of the project. Check out George Zhang's Blog for more information. More articles relating to JDIC ......

5.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: leowu2000
Posted on: 2005-08-08 14:13

没有说明,没有源代码,没有自己的思想,我重新打分了,只给1分.

还希望能共享更多的设计思想,如果共享的是代码,请给出具体代码.谢谢!

6.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: YuLimin
Posted on: 2005-08-08 16:09

package swing;

/**
* <p>Title: FlashPlayer</p>
*
* <p>Description: FlashPlayer</p>\
*
* <p>使用这个项目:https://jdic.dev.java.net/</p>
*
* <p>Copyright: Copyright Coffee 1997 - 2005</p>
*
* <p>Company: Beyond DayBreak Office</p>
*
* @author YuLimin
* @version 1.0
*/
import java.io.File;

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

import org.jdesktop.jdic.browser.WebBrowser;

public class FlashPlayer extends JFrame
{
/**
* FlashPlayer构造函数,完成Flash播放,其实就是创建一个WebBrowser,丢给它一个Flash文件就可以了:)
*
* @param filepath String
*/
public FlashPlayer(String filepath)
{
JPanel jPanel = new JPanel();
WebBrowser browser = new WebBrowser();
jPanel.setLayout(new BorderLayout());
setTitle("Java Flash Player");
setDefaultCloseOperation(3);
try
{
browser.setURL(new File(filepath).toURL());
}
catch(Exception ex)
{
ex.printStackTrace();
}
jPanel.add(browser,"Center");
getContentPane().add(jPanel);
setSize(800,600);
}

/**
* 测试Flash文件的播放,加上要播放文件的全路径即可!
*
* @param args String[]
*/
public static void main(String args[])
{
if(args.length > 0)
{
FlashPlayer player = new FlashPlayer(args[0]);
player.setVisible(true);
System.out.println("播放Flash文件:" + args[0]);
}
else
{
System.out.println("参数不对,请加上要播放的Flash文件全路径!");
}
}
}
BTW:附上一个Flash文件进行测试:)

7.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: tzutolin
Posted on: 2005-08-09 08:52

好! 漂亮 Smile

8.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: ljy0000
Posted on: 2005-08-09 13:00

谢谢大家对我帖子的关注。
首先,在说明Flash播放器的原理前先介绍一下jdic。
jdic分为四个包:
1、org.jdesktop.jdic.browser
这个包可将浏览器嵌入到AWT canvas中,其中的WebBrowser类继承自java.awt.Canvas,所以我就可以这样用:

WebBrowser browser=new WebBrowser();
JPanel panel=new JPanel();
panel.setLayout(new BorderLayout());
panel.add(browser, BorderLayout.CENTER);

然后就可将panel加入到JFarme中,为什么不把WebBrowser直接放入JFrame中呢,自己试试看就知道了。
2、org.jdesktop.jdic.desktop
这个包可用系统默认的程序打开、编辑、打印文件。Desktop类全是静态方法。比如:
你要用Word软件打开一个Word文档,就可以这样:
File file=new File("c:\a.doc");
Desktop.open(file);
另外的功能是browse方法可用本地浏览器打开一个网址,用mail方法发邮件等等。
3、org.jdesktop.jdic.filetypes
这个包可将一个文件类型注册到系统中,比如你作了一个软件,专门处理文件扩展名为.java的文件,只要你程序设置好,就可以通过双击文件扩展名为.java的文件来用你的软件打开Java文件,就像双击doc文件就可用word打开一样,例子就不举了。
4、org.jdesktop.jdic.tray
这个包可以让你的程序出现在系统托盘区,我就不多说了,大家自己看吧,很简单。

好了,现在回到制作Flash播放器,我们用的就是WebBrowser类,我们知道,在IE中可直接播放Flash,所以,WebBrowser也可以,只要我们给出Flash的URL即可,示例如下:


import org.jdesktop.jdic.browser.WebBrowser;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.MalformedURLException;

public class FlashPlayer extends JFrame {
JMenuBar bar=new JMenuBar();
JMenu jMenuFile=new JMenu("File");
JMenuItem jMenuItemOpen=new JMenuItem("Open");
WebBrowser browser;
JFileChooser chooser=new JFileChooser();
public FlashPlayer() throws HeadlessException {
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
browser = new WebBrowser();
jMenuFile.add(jMenuItemOpen);
bar.add(jMenuFile);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jMenuItemOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(chooser.showOpenDialog(FlashPlayer.this)==JFileChooser.APPROVE_OPTION){
try {
//下面语句将Flash文件的URL给WebBrowser。
browser.setURL(chooser.getSelectedFile().toURL());
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
}
}
});
JPanel jPanel=new JPanel();
jPanel.setLayout(new BorderLayout());
jPanel.add(browser, BorderLayout.CENTER);
getContentPane().add(jPanel);
setJMenuBar(bar);
setSize(800, 600);
}

public static void main(String[] args) {

FlashPlayer player=new FlashPlayer();
player.setVisible(true);
}
}



其实,WebBrowser并不是仅能播放Flash文件,只要能用IE打开的文件,都能用WebBrowser打开。
最后,恭祝大家能用jdic作出更好的软件,希望大家能从我的介绍中获得知识。

9.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: Jove
Posted on: 2005-08-10 10:15

谢谢你的介绍和demo

不过,你写的这个FlashPlayer并不能控制里面的Macromedia flash player
比如控制播放/暂停,设置缩放,读写Flash变量等...

10.Re:用Java制作的Flash播放器 [Re: Jove] Copy to clipboard
Posted by: leowu2000
Posted on: 2005-08-10 13:59

他写的这个东西核心其实只在于IE的嵌入使用,其实和flash真正关系不大,我想通过swt嵌入控件的方式应该比这个更加通用,应该是可以控制的.

好像有个朋友不是用swt弄了个媒体播放器出来么,在eclipse那个板块,如果那个朋友公开详细细节的话,倒是很不错的.

11.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: cnfree
Posted on: 2005-09-04 03:33

呵呵,正好最近闲来无事,用SWT模仿Flash Player4.0写了一个Flash播放器 Smile 并且免JVM,大小为3M。

下载地址: http://blog.csdwiki.org/download/FlashPlayer.exe

核心代码非常简单

注册Flash控件
private void init(){
try {
setPlayerSite(new OleControlSite(viewFrame.getFrame(), SWT.NONE,
"ShockwaveFlash.ShockwaveFlash"));
getPlayerSite()
.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
PlayManager.getInstance().setControlSite(getPlayerSite());
setPlayActiveX(new OleAutomation(getPlayerSite()));
PlayManager.getInstance().setPlayActiveX(getPlayActiveX());
} catch (Exception e) {
new ErrorDialog("注册Flash组件失败,请重新下载并安装Flash");
try {
Runtime.getRuntime().exec(
"explorer \"http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\"");
} catch (IOException e1) {
}
MainFrame.getInstance().getShell().dispose();

}
}


操纵Flash控件:
   private final static String[] isPlaying = new String[] { "IsPlaying" }; 
private final static String[] loop = new String[] { "Loop" };

public static boolean isPlaying(OleAutomation flashActiveX) {
int id = flashActiveX.getIDsOfNames(isPlaying)[0];
return flashActiveX.invoke(id).getBoolean();//调用API方法
}

public static void setLoop(OleAutomation flashActiveX, boolean isLoop) {
int id = flashActiveX.getIDsOfNames(loop)[0];
flashActiveX.setProperty(id, new Variant(isLoop));//设置控件属性
}

具体的API就要到macromedia的官方网站查询,以便得到各个API的方法原型。

另外我还做了一个SWT加强版,增加了一些API,可以操作磁盘,内存,关机/注销/重启,隐藏鼠标,列出/杀死系统进程等等。当然这是不可跨平台的,但是如果不使用这些功能,和普通的swt没有什么区别,一样操作。感兴趣的朋友可以尝试一下。

下载地址:http://bbs.rcp.cn/read.php?tid=69&fpage=1(晕倒,需要注册,我也没办法Sad

我觉得用Java+JNI写本地桌面应用也许是另一个比较好的途径,充分结合了了Java富裕的第三方类库和C/C++的强大功能的优点,对于Java人员快速应用程序,还是比较不错的选择。既可以不睬.NET,也可以避免使用起来类库贫瘠、蹩手蹩脚的C++。

12.Re:用Java制作的Flash播放器 [Re: cnfree] Copy to clipboard
Posted by: leowu2000
Posted on: 2005-09-04 10:19

免JVM?使用GCJ编译的?现在比较实用了么?

13.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: ctgu
Posted on: 2005-09-27 17:42

--------------------Configuration: JDK version 1.5.0 <Default>--------------------
F:\java小程序\FlashPlayer.java:24: package org.jdesktop.jdic.browser does not exist
import org.jdesktop.jdic.browser.WebBrowser;
^
F:\java小程序\FlashPlayer.java:36: cannot find symbol
symbol : class WebBrowser
location: class swing.FlashPlayer
WebBrowser browser = new WebBrowser();
^
F:\java小程序\FlashPlayer.java:36: cannot find symbol
symbol : class WebBrowser
location: class swing.FlashPlayer
WebBrowser browser = new WebBrowser();
^
3 errors

Process completed.

----------------------------------------

package org.jdesktop.jdic.browser在什么地方下啊 .??

14.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: tzutolin
Posted on: 2005-09-29 12:54

您可以在 jdic.dev.java.net 找到 jdic 的函式庫.

https://jdic.dev.java.net/servlets/ProjectDocumentList;jsessionid=0C81A9B60D10723932E1E514C29D4AD4

15.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: JavaandC
Posted on: 2005-10-31 12:30

To:cnfree and leowu2000

请问一个问题:
就是我用GCJ的时候总是提是错误,请问是怎么回事?下面是我在本网站上发的帖子,请回复一下,本人在这先谢谢各位了,谢谢!

http://www.cjsdn.net/post/view?bid=53&id=160862&sty=1

如果还有其他人会的,请一定帮帮忙啊,谢谢

16.Re:用Java制作的Flash播放器 [Re: JavaandC] Copy to clipboard
Posted by: leowu2000
Posted on: 2005-10-31 12:55

最起码你也要把你的出错信息还有操作步骤整理并放上来吧:)

这个平时大家很少用到的,只能根据手册还有错误信息来诊断了。

17.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: JavaandC
Posted on: 2005-11-01 08:10

我在里面写了错误的语句,还有就是那有相关手册下载,请介绍一下可以吗,谢谢。

18.Re:用Java制作的Flash播放器 [Re: YuLimin] Copy to clipboard
Posted by: oflyfisho
Posted on: 2006-01-13 19:26

YuLimin wrote:
package swing;

/**
* <p>Title: FlashPlayer</p>
*
* <p>Description: FlashPlayer</p>\
*
* <p>使用这个项目:https://jdic.dev.java.net/</p>
*
* <p>Copyright: Copyright Coffee 1997 - 2005</p>
*
* <p>Company: Beyond DayBreak Office</p>
*
* @author YuLimin
* @version 1.0
*/
import java.io.File;

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

import org.jdesktop.jdic.browser.WebBrowser;

public class FlashPlayer extends JFrame
{
/**
* FlashPlayer构造函数,完成Flash播放,其实就是创建一个WebBrowser,丢给它一个Flash文件就可以了:)
*
* @param filepath String
*/
public FlashPlayer(String filepath)
{
JPanel jPanel = new JPanel();
WebBrowser browser = new WebBrowser();
jPanel.setLayout(new BorderLayout());
setTitle("Java Flash Player");
setDefaultCloseOperation(3);
try
{
browser.setURL(new File(filepath).toURL());
}
catch(Exception ex)
{
ex.printStackTrace();
}
jPanel.add(browser,"Center");
getContentPane().add(jPanel);
setSize(800,600);
}

/**
* 测试Flash文件的播放,加上要播放文件的全路径即可!
*
* @param args String[]
*/
public static void main(String args[])
{
if(args.length > 0)
{
FlashPlayer player = new FlashPlayer(args[0]);
player.setVisible(true);
System.out.println("播放Flash文件:" + args[0]);
}
else
{
System.out.println("参数不对,请加上要播放的Flash文件全路径!");
}
}
}
BTW:附上一个Flash文件进行测试:)

我编译没有错
结果运行 发生如下错误

(缩略图,点击图片链接看原图)

19.Re:用Java制作的Flash播放器 [Re: ljy0000] Copy to clipboard
Posted by: oflyfisho
Posted on: 2006-01-13 21:21

不好意思我试了一下
要把
jdic.dll 放在 C:\Windows 目录(或者对应的目录)中。这些文件包含 jdic.jar 的 Java 方法和本机操作系统方法之间的“桥接”方法。

但那个ieEmbed.exe也要放到lib里面去才能运行,这个idembed.exe是什么东东啊,请高手解释一下:)


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923