freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

音頻播放器軟件的設計與實現(xiàn)_畢業(yè)論文-閱讀頁

2024-09-15 03:24本頁面
  

【正文】 Controller 改變 Model 或 View,或者同時改變兩者。類似的,只要 Controller 改變了 View, View 會從潛在的 Model 中獲取數(shù)據(jù)來刷新自己。 流程如圖 31 所示 圖 31 系統(tǒng)目標 對于 音頻 播放器,必須給用戶提供最簡單的操作和最完善的功能。除了最基本的操作以外,優(yōu)秀的播放器還提供了許多附加的功能來突出顯示該媒體播放器的特色,例如本播放器的歌詞實時顯示。 系統(tǒng)功能模塊 概要 設計 本軟件同樣采用 MVC 的設計模式,做到控制,信息與視圖的相互分離,同時相互間有聯(lián)系緊密,互相調用,互為條件與依賴。用戶界面模塊 播放信息模塊 歌詞控制模塊 其相互關系如 圖 32所示 用戶請求事件 用戶請求事件 視圖信息更新 視圖信息更新 更新信息 讀取信息 更新信息 讀取信息 讀取信息 更新信息 播放信息模塊 用戶界面模塊 播放控制模塊 播放列 表控制模塊 歌詞控制模塊 播放列表 歌曲信息 第 3章 系統(tǒng)架構和功能模塊設計 13 圖 32 用戶界面模塊 為了實現(xiàn)軟件產(chǎn)品界面的友好性和簡潔性,同時又要保證功能的完整性,播放器的控 制窗口的設計顯得更是不同一般的重要。 組件名稱 組成控件 功能 控制按鈕 播放 /暫停控制按鈕 點擊此按鈕可以播放媒體文件或暫停 音頻文件播放 停止功能按鈕 點擊此按鈕可以停止當前正在播放的 音頻 文件 上一首功能按鈕 點擊此按鈕播放播放列表中當前歌曲的上一首歌曲 下一首功能按鈕 點擊此按鈕播放播放列表中當前歌曲的下一首歌曲 靜音功能按鈕 點擊此按鈕可以關閉或打開聲音 控制條 音量控制條 可以通過此控制條改變音量的大小 進度控制條 可以通過此控 制條改變播放的進度 播放列表菜單欄 添加 列表 項 添加 音頻 文件到播放列表 刪除 列表 項 從播放列表刪除選中的一個媒體文件 清空列表按鈕 刪除播放列表中的所有媒體文件 新建列表按鈕 彈出對話框新建一個用戶命名播放列表 刪除列表按鈕 彈出對話框是否確認刪除當前選擇播放列表 保存列表按鈕 將播放列表中的內容 序列化 成 .dat 格式的播放列表文件 載入列表按鈕 從 .dat 格式的文件中讀取媒體文件的信息到播放列表中 系統(tǒng)菜單欄 打開文件菜單項 選擇此項彈出文件選擇窗口選擇要播放的音頻文件 退出 菜單項 選擇此項退出系統(tǒng) 第 3章 系統(tǒng)架構和功能模塊設計 14 播放模式菜單 單選框用于選擇播放模式:單曲循環(huán),順序播放 版本菜單項 選擇此項彈出當前軟件版本對話框顯示當前版本信息 標簽 時間標簽 顯示當前播放 音頻文件 的 總體進度 正在播放標簽 顯示播放器當前所 播放的文件的絕對路徑 歌曲名標簽 顯示 當前播放音頻文件的 TAG 中的歌曲名 藝術家標簽 顯示 當前播放音頻文件的作者 總時間標簽 顯示當前播放 音頻文件的總時長 格式標簽 顯示當前播放 的音頻文件的格式,采樣頻率和取樣位數(shù) 星級標簽 顯示當前播放的音頻文件的用戶 評價星級 上次修改標簽 電視當前播放的音頻文件的最后一次修改時間 對于一個小小的窗口,要擺放這么多的控件,如果隨便地放在窗口上的話,將會使窗口十分混亂,影響使用,所以要對其擺放位置進行合理的規(guī)劃。這樣一來,就可以實現(xiàn)軟件產(chǎn)品界面的友好性與簡潔性,條理分明,在保證軟件產(chǎn)品功能完整性的同時,方便了用戶的使用。 歌曲信息節(jié)點 1 歌曲信息節(jié)點 2 歌曲信息節(jié)點。當要播放該文件時,就從播放信息模塊中提取當前索引所指向該文件地址并將地址傳送到播放控制模塊 ,然后賦值給管理器 Manager 的新創(chuàng)建的媒體定位器對象 (MediaLocator), Manager 創(chuàng)建播放器 (Player)后,剩下的工作都交給 Player進行音頻文件的播放。 圖 35 打開按鈕事件觸發(fā) 調用系統(tǒng)的文件選擇器讀取磁盤音頻文件地址信息 將文件地址傳送到播放列表窗口 播放列表更新,同時將地址傳遞至播放信息模塊進行數(shù)據(jù)更新 播放按鈕事件觸發(fā) 播放控制模塊從播放信息模塊獲取當前需要播放的文件信息 由 Manager 根據(jù)音頻文件信息創(chuàng)建播放器對 象Player 響應控制事件對 Player 進行實時控制 播放,暫停,音量,進度等事件 第 3章 系統(tǒng)架構和功能模塊設計 20 對歌詞文件的傳遞 歌詞的實時顯示作為本播放器的重要功能, LRC 歌詞文件的處理流程也就顯得至關重要,因為 LRC 歌詞可能處于不同位置,所以其地址和數(shù)據(jù)處理流程要比音頻文件的處理流程要復雜得多,其具體處理過程如圖 32所示。如果存在,則將其傳遞給歌詞控制模塊進行時間信息和歌詞文本的分離,然后返回播放控制模塊;如果此時返回的歌詞存在,則將其傳遞給歌詞顯示窗口進行顯示,并使用時間信息進行控 制。 如圖 36 圖 36 內嵌歌詞? 歌詞文件夾歌詞? 同路徑歌詞存在? 不顯示歌詞 開始 歌詞處理函數(shù) 右鍵菜單關聯(lián)歌詞命令 顯示刷新歌詞 是 是 是 否 否 否 第 3章 系統(tǒng)架構和功能模塊設計 21 播放控制流程 播放器 Player 從建立之初到消亡,各有一系列已經(jīng)在 JMF 中編寫好的方法可以調用, 本軟件也自定義了一系列方法來實現(xiàn)播放,暫停,停止,時間拖拽 ,播放邏輯如圖 37所示: Close() Stop() Pause() Resume() 圖 37播放狀態(tài) Stop() Play() 暫停狀態(tài) 停止狀態(tài) 正在播放狀態(tài) Player 創(chuàng)建 Player 啟動 播放歌曲 判斷播放器狀態(tài) 恢復播放 重新播放 停止當前播放 重置時間 播放 暫停 停止 時間條拖動事件 分配資源 第 4章 系統(tǒng)詳細設計實現(xiàn) 22 第 4 章 系統(tǒng)詳細設計與實現(xiàn) 開發(fā)平臺及環(huán)境 本系統(tǒng)采用的開發(fā)平臺是 IBM公司的 。 Eclipse本身非常小,其設計思想是“一切皆為插件”,其他功能都是基于插件的形式與 Eclipse無縫結合,協(xié)同工作,如 Eclipse的圖形開發(fā)環(huán)境( SWT/JFace), Java開發(fā)環(huán)境插件( JDT),多國語言包,等。接受被改變的信息,顯示 /更新界面信息 第 4章 系統(tǒng)詳細設計實現(xiàn) 23 將改變的信息傳遞給其他控制模塊 其中最重要的任務無意識監(jiān)聽用戶 /播放器的事件并作出相應的反應,技術要點如下 對播放拖動條 添加拖動事件監(jiān)聽器 名稱為 TimeSlider 拖動 TimeSlider 會產(chǎn)生 StateChangedEvent 狀態(tài)改變時間,因此要對TimeSlider 添加事件監(jiān)聽器 ChangeListener 以捕捉該事件。// TODO } else { if (isDrag) { //如果拖動狀態(tài)被觸發(fā) (() * )。 //根據(jù)播放器的百分比 *總時間獲取當前時間 TimeAdd(0)。 } //重新設置播放器時間 } } })。音量顯示屏顯示的最小值為 0,最大值為 100,為最大音量的百分比。//設置當前音量數(shù)值 if (() != null) { ().getGainControl() .setLevel( ())。 對鼠標點擊放開事件添加監(jiān)聽器 MainFrame 用戶界面中按鈕眾多,每點擊一個按鈕都要觸發(fā)一個事件,因此每個按鈕都要添加一個事件監(jiān)聽器未免太過麻煩,于是我們尋找到一種新的解決辦法,那就是為 MainFrame 類實現(xiàn) MouseListener,ActionListener 的接口, public class MainFrame extends JFrame implements ActionListener, MouseListener 這樣一來只需要在 MainFrame 實現(xiàn)接口的方法,就可以及時對時間作出反應 我們主要對 MouseReleasedEvent 做出反應,代碼如下 public void mouseReleased(MouseEvent e) { // TODO 自動生成方法存根 if (() == SoundButton) {//聲音打開 if (()) { (false)。 (true)。 (false)。 } } } 第 4章 系統(tǒng)詳細設計實現(xiàn) 25 if (() == SoundCloseButton) {//聲音關閉 (false)。 (true)。 (true)。 } } if (() == PlayButton) { //播放按鈕 if (() == null) { OpenFile()。 } } if (() == StopButton) { //停止按鈕 stop()。 } } } if (() == TimeSlider) { isDrag = false。 (new TimerTask() { double pt = 。amp。 ((float)pt)。//更新時間條 (1)。//更新 TimeLabel repaint()。 repaint()。 SystemTray tray = ()。 // 創(chuàng)建圖表的圖像 (new WindowAdapter() { public void windowIconified(WindowEvent e) { dispose()。 PopupMenu popupMenu = new PopupMenu()。 (new ActionListener() { public void actionPerformed(ActionEvent e) { // TODO Autogenerated method stub try { 第 4章 系統(tǒng)詳細設計實現(xiàn) 27 ()。 } catch (Exception ex) { ()。 (exitItem_exit)。 (new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (() == 2) {//鼠標雙擊兩次事件 setExtendedState()。 } } })。 } catch (AWTException e) { (e)。//labeltime為當前播放時間 int h = 0。 int s = 0。 labeltime = labeltime h * 3600。 labeltime = labeltime m * 60。 SetLabelTime(h, m,
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1