EL比赛技术日志(1)
2012-03-23 18:45:38
=====================
EL大赛已开始两个星期了,感觉我们的程序进展不大,只写了不到1500行,我自己就写了1000行……并且现在到瓶颈期了。
游戏的主框架用了一个星期想好了,本周开始终于不再失眠了…… JFrame作主窗口,paint(Graphics g)下写switch(SceneManager.getCurrentScene),分情况把g交给某个canvas如campus.draw(g),鼠标键盘监听也如此做。人物采用八方走向,可切换走跑,并采用地图滚动的方式,鼠标操作,算是山寨了一个仙剑or梦幻or大话……山寨的自己都不好意思编了……不过运行起来感觉有模有样,最重要的是我没有使用任何游戏引擎,yeah!
一直没有人人账号,感觉这东西和游戏一样浪费生命。今天突然想到邵栋老师说大家写技术博客吧,我想我也写点什么吧,找平台时候想到了人人……额,思维混乱了,好吧,第一篇先从昨晚学到的新技术开始说起。
开始编的时候就想往java Application里添加视频和音频,找遍无数论坛贴吧,得到唯一解------JMF。
昨天找到了一个jmf播放器示例,研究了一个下午,可以熟练的播放音乐了,比audioStream好用多了,可以播MP3,不用再转换成几十倍MP3大小的wav了……下面谈用法
首先导入javax.media.*和java.awt.*,创建一个播放器,Player musicPlayer;,然后指定要播放的文件并处理异常:
try{
musicPlayer = Manager.createPlayer(new MediaLocator("file:D:/music.mp3"));
}catch(java.io.IOException e){
System.out.println(e);
return;
}catch (NoPlayerException e) {
System.out.println("不能找到播放器。");
return;
}
接下来直接musicPlayer.start();就能播了,jmf貌似音频能播mp3、wav,视频mpg,如果格式不支持进入上面第二个catch……看来这个是创建了一个线程来播放的,这说明可以多个文件同时播,比如在游戏中既要有背景音乐又要有音效,就可以创建两个Player来播放。
播视频中有个问题昨晚一直未解决。如果创一个类并extends Frame的话,那么implements ControllerListener,然后创建一个组件 Component vc;然后
public void controllerUpdate(ControllerEvent e) {
if(e instanceof RealizeCompleteEvent){
vc = player.getVisualComponent();//得到可视化组件
}
}
把这个vc加入Frame里就能播放视频了,但经过试验如果把播放器做成一个类,在另一个类的JFrame里添加这个vc,视频就无法播放了。最后这个播放器肯定要做成一个类的,不可能和主窗口绑定,因为很多场景需要播放不同的音乐,总不能让他们反过来调用主窗口的方法吧?今天再试试吧.OVER

浙公网安备 33010602011771号