999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Authorware 7的個性化媒體播放器的設計與實現

2008-12-31 00:00:00秦福高
電腦知識與技術 2008年11期

摘要:在Authorware 7.0中利用ActiveX控件和外部函數能夠實現個性化媒體播放器的視頻播放控制部分的設計,對于彈出式菜單設計、按鈕激活條件的設置以及滑塊控制進度和音量等都比較容易。

關鍵詞:ActiveX;外部函數;菜單;按鈕;滑塊;播放器

中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)11-20329-03

1 前言

Authorware作為一種主要面向非程序員的優秀的交互式多媒體創作工具,為了滿足一些高級設計人員進行復雜程序創作的需要,Authorware從4.0版本開始提供了對ActiveX控件和外部函數的支持,由于有許多軟件廠商支持ActiveX技術,所以大多數功能都能找到相應的ActiveX控件。在Authorware中,通過調用ActiveX控件來直接使用現成的程序模塊,可省掉許多繁瑣的編程,而且幾乎可以完成任何工作。

目前,媒體播放器越來越追求個性化,為了滿足個性化的需求,我們可以借助圖形圖像處理軟件使播放界面個性化,在Authorware 7.0中利用控件以及外部函數能設計出播放各種媒體的個性化播放器。在設計視頻播放控制時,要注意播放、暫停、繼續、停止、快進、后退等操作的激活條件,進度滑塊及音量滑塊能及時地響應交互。在Authorware 7.0中設計的媒體播放器運行界面如圖1所示。

2 ActiveX控件的應用

ActiveX控件通常以動態鏈接庫的形式存在,其設計思想是將一個程序嵌入到另一個程序中,這樣就可使它能夠隨意地應用到各種場合。ActiveX控件的數據輸入和函數功能執行都必須通過容器,因此ActiveX控件和容器之間必須有一些特定的接口協議。ActiveX控件必須具備屬性(property)、方法(method)和事件(event),通過屬性的名稱、方法的名稱及參數,容器可以存取和改變ActiveX控件的屬性參數。通過事件,比如屬性參數的改變、用戶按下鼠標左鍵等,ActiveX控件通知容器進行響應相關操作。

2.1 ActiveX控件的安裝

在開發Authorware的應用程序時,如果利用了ActiveX控件,在打包發布時要注意兩點:(1)在用戶的應用程序中需附帶上所需的支持文件,即在應用程序的“Xtras”目錄里附帶上Activex.x32,因為只有這樣應用程序才能夠正常地執行,否則程序中的ActiveX控件是無法使用的。但是需要注意的是打包程序無須附帶上Actxpriv.x32,否則會造成不可預料的后果,因為它主要負責設計時利用ActiveX控件的界面。(2)要將所需的ActiveX控件相關文件(*.OCX或*.DLL)復制到硬盤相應的文件夾中(Windows NT以后的操作系統是%systemroot%\\system32),本播放器應用程序在設計時需要復制MSDXM.OCX、COMDLG32.OCX、FM20.DLL、FM20CHS.DLL四個文件,然后將其在Windows系統中注冊。

2.2 ActiveX控件的注冊

設計Authorware應用程序時,如果要使用Authorware沒有提供的控件,使用前要先在Windows中進行手動注冊。如果我們的程序中使用了控件且要交給用戶使用,在程序中應先檢測用戶機中是否注冊了該控件,若沒有就要進行自動安裝、自動注冊。本播放器使用時需要檢測Microsoft Forms 2.0 ScrollBar、Microsoft Common Dialog Control和Windows Media Player三個控件,以便確定是否要安裝、注冊。

注冊的方法有兩種:

(1)手動注冊

方法:先將所需的ActiveX控件相關文件(如MSDXM.OCX、COMDLG32.OCX、FM20.DLL、FM20CHS.DLL)復制到硬盤相應的文件夾中(Windows NT以后的操作系統是%systemroot%\\system32)。然后手動注冊,即單擊Windows的“開始”菜單,選擇“運行”命令,在打開的對話框中輸入以下命令: regsvr32.exe,如regsvr32.exe MSDXM.OCX。

regsvr32.exe是Windows自帶的ActiveX注冊工具,可以在Windows的系統目錄中找到。

(2)自動注冊

方法:利用Authorware 中的Xtra ActiveX 里的函數來進行注冊。對ActiveX控件注冊的格式如下: ActiveXControlRegister(\"\")。

本播放器應用程序使用了三個控件,圖2是媒體播放器設計窗口。

圖標FileDialog負責打開文件,用的是Microsoft Common Dialog Control控件;圖標VolumeBar負責音量調節,圖標PositionBar負責進度處理,兩者用的是同一種控件Microsoft Forms 2.0 ScrollBar;圖標MediaPlay負責媒體播放,用的是Windows Media Player控件。在計算圖標Register中設置程序進行自動檢測、安裝和注冊,程序如下:

——獲取三個控件的classID

classIDScrollBar:=\"{DFD181E0-5E2F-11CE-A449-00AA004A803D}\"

classIDDialog:=\"{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\"

classIDMediaplay:=\"{22D6F312-B0F6-11D0-94AB-0080C74C7E95}\"

——獲取系統文件夾

WindowsPath:=getosdirectory()

——判斷當前系統是否支持控件注冊

if ActiveXInstalled()=-1 then

——判斷Microsoft Forms 2.0 ScrollBar滾動條控件是否已安裝

if ActiveXControlQuery(classIDScrollBar)=0 then

——拷貝FM20.DLL和FM20CHS.DLL兩個文件到系統目錄

CopyFile(FileLocation^\"FM20.DLL\",WindowsPath^\"\\\\system32\\\\FM20.DLL\")

CopyFile(FileLocation^\"FM20CHS.DLL\",WindowsPath^\"\\\\system32\\\\FM20CHS.DLL\")

——注冊Microsoft Forms 2.0 ScrollBar滾動條控件

ActiveXControlRegister(WindowsPath^\"\\\\system32\\\\FM20.DLL\")

end if

——判斷、注冊Microsoft Common Dialog Control,version 6.0通用對話框控件

if ActiveXControlQuery(classIDDialog)=0 then

CopyFile(FileLocation^\"COMDLG32.OCX\",WindowsPath^\"\\\\system32\\\\COMDLG32.OCX\")

ActiveXControlRegister(WindowsPath^\"\\\\system32\\\\COMDLG32.OCX\")

end if

——判斷、注冊Windows Media Player 6.4控件

if ActiveXControlQuery(classIDMediaplay)=0 then

CopyFile(FileLocation^\"MSDXM.OCX\",WindowsPath^\"\\\\system32\\\\MSDXM.OCX\")

ActiveXControlRegister(WindowsPath^\"\\\\system32\\\\MSDXM.OCX\")

end if

end if

3 彈出式菜單

現在許多播放器都有彈出式菜單功能,如在圖1中的MENU按鈕上單擊時會出現有“打開文件”、“全屏播放”和“退出”三個子菜單項的菜單,且單擊某個子菜單項時執行相應操作。其設計原理是創建菜單、激活菜單、響應子菜單項。

3.1 創建菜單

計算圖標BuildMenu中的程序負責創建菜單,mCreatePopupMenu()、mAppendMenu( Menu, Flags , MenuID , MenuText )、mMenuHookOn( WindowHandle )函數都置于外部函數budmenu.u32中,使用時需載入到Authorware中,程序如下:

——選擇的菜單項的ID的初值

LastMenuID := -1

——添加一個filename主菜單項

filemenu := mCreatePopupMenu()

mAppendMenu( filemenu , 0 , 10 , \"打開文件\")

mAppendMenu( filemenu , 0 , 11, \"全屏播放\")

mAppendMenu(filemenu,2048,0,\"\")

mAppendMenu( filemenu , 0 , 12 , \"退出\")

——設置與Authorware通信的消息鉤子

mMenuHookOn( WindowHandle )

3.2 激活菜單

為了確保交互靈活,按鈕響應MenuActivation的響應需設為永久、返回,該響應包含的兩個計算圖標FileMenuTrack和ReturnLastMenuID的順序不可顛倒。

(1)計算圖標FileMenuTrack的程序為:

——激活菜單

mTrackPopupMenu(filemenu,0,ResponseLeft@“MenuActivation”+WindowLeft,ResponseTop@“MenuActivation”+ResponseHeight@“MenuActivation”+WindowTop,0,WindowHandle,0 )

(2)計算圖標ReturnLastMenuID的程序為:

——獲取最后選擇的菜單項的ID

LastMenuID := mGetLastMenuID()

Checked@\"MenuActivation\" := FALSE

3.3 響應子菜單項

根據獲取的最后選擇的子菜單項的ID 值來執行相應的響應為永久、返回的條件響應:LastMenuID=10 、LastMenuID=11和LastMenuID=12,從而實現文件打開、全屏播放和退出。

(1)計算圖標LastMenuID=10的程序為:

——打開文件

SetSpriteProperty(@\"FileDialog\", #dialogtitle, \"請選擇一個視頻文件:\")

SetSpriteProperty(@\"FileDialog\", #BaseURL, FileLocation)

SetSpriteProperty(@\"FileDialog\", #filter, \"視頻文件|*.mpg;*.avi;*.mpeg;*.dat;*.asf\")

CallSprite(@\"FileDialog\", #showopen)

getFile:=GetSpriteProperty(@\"FileDialog\", #FileName)

SetSpriteProperty(@\"MediaPlay\", #FileName,getFile)

SetSpriteProperty(@\"MediaPlay\",#displaysize,4)

CallSprite(@\"MediaPlay\",#play)

LastMenuID:=-1

(2)計算圖標LastMenuID=11的程序為:

——設置為全屏播放

SetSpriteProperty(@\"MediaPlay\",#displaysize,3)

LastMenuID:=-1

3)計算圖標LastMenuID=12的程序為:

——退出

mMenuHookOff()

mDestroyMenu(filemenu)

Quit()

4 按鈕控制

4.1 按鈕激活條件

在設計按鈕控制時,要合理設置播放(從頭開始)、暫停、繼續、停止(回到開頭)、快進、后退等按鈕的激活條件,文件沒打開所有按鈕應不可用,播放時繼續按鈕應處于隱藏狀態,暫停時停止按鈕不可用但繼續按鈕激活,停止時暫停按鈕不可用且繼續按鈕隱藏,視頻正常播放結束時暫停、停止、快進不可用且繼續隱藏。

4.2 程序設置

為了實現上述要求,在設計時每一個按鈕交互都要從兩方面考慮:激活條件和程序內容。

play:激活條件為playfile<>\"\",計算圖標內容為:

SetSpriteProperty(@\"MediaPlay\", #CurrentPosition,1)

CallSprite(@\"MediaPlay\", #Play)

pause:激活條件為(playstate=2)(CurrentPosition

CallSprite(@\"MediaPlay\", #Pause)

resume:激活條件為(playstate=1)(CurrentPosition

CallSprite(@\"MediaPlay\", #Play)

stop:激活條件為(playstate=2)(CurrentPosition

SetSpriteProperty(@\"MediaPlay\", #CurrentPosition,1)

CallSprite(@\"MediaPlay\", #stop)

fastforward:激活條件為CurrentPosition

Duration:=GetSpriteProperty(@\"MediaPlay\", #Duration)

CurrentPosition:=GetSpriteProperty(@\"MediaPlay\", #CurrentPosition)

if CurrentPosition

NewPosition:=CurrentPosition+15

else

NewPosition:=Duration

end if

SetSpriteProperty(@\"MediaPlay\", #CurrentPosition,NewPosition)

CallSprite(@\"MediaPlay\", #play)

fastreverse:激活條件為CurrentPosition>1,計算圖標內容為:

Duration:=GetSpriteProperty(@\"MediaPlay\", #Duration)

CurrentPosition:=GetSpriteProperty(@\"MediaPlay\", #CurrentPosition)

if CurrentPosition>15 then

NewPosition:=CurrentPosition-15

else

NewPosition:=0

end if

SetSpriteProperty(@\"MediaPlay\", #CurrentPosition,NewPosition)

CallSprite(@\"MediaPlay\", #Play)

5 滑塊控制進度及音量

5.1 滑塊作用

拖動水平滑塊,調整文件播放進度,且滑塊在水平滾動條上的位置與文件當前進度的百分比一致。拖動垂直滑塊,調整音量大小,且滑塊在垂直滾動條上的位置與系統音量大小的百分比一致。

5.2 事件響應設置

在兩個事件響應BarSetMaster和BarSetPosition中,響應都設為永久、返回,事件響應BarSetMaster的事件設為發送“圖標VolumeBar”的事件“Change”, 事件響應BarSetPosition的事件設為發送“圖標PositionBar”的事件“Change”。

(1)計算圖標BarSetMaster內容為:

volume:=GetSpriteProperty(@\"VolumeBar\",#value)

baSetVolume(\"master\",100-volume)

(2)計算圖標BarSetPosition內容為:

position:=GetSpriteProperty(@\"PositionBar\",#value)

Duration:=GetSpriteProperty(@\"MediaPlay\", #Duration)

CurrentPosition:=position/100*Duration

SetSpriteProperty(@\"MediaPlay\", #CurrentPosition,CurrentPosition)

CallSprite(@\"MediaPlay\", #Play)

PauseFlag:=1

6 結束語

在Authorware中如果能夠合理地運用ActiveX控件和外部函數,個性化媒體播放器可以設計的非常完善,各種功能都能實現,即使是滑塊動態地顯示當前進度、播放狀態等也能較好地解決。

參考文獻:

[1] 畢廣吉.Authorware多媒體開發程序設計與典型實例[M].北京:人民郵電出版社,2004.

[2] 陳學韶.Authorware7多媒體設計師特訓班[M].四川:四川電子音像出版中心,2004.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 国产成人久视频免费| 国产黑丝一区| 欧美一级黄色影院| 999国内精品久久免费视频| 欧美一级色视频| 尤物精品国产福利网站| 国产微拍一区二区三区四区| 欧洲在线免费视频| 亚洲色欲色欲www在线观看| 亚洲中文在线视频| 久久精品一卡日本电影| 毛片大全免费观看| 美女被操91视频| 黄色a一级视频| 色综合婷婷| 亚洲不卡av中文在线| 91久久国产热精品免费| 久精品色妇丰满人妻| 欧美α片免费观看| 亚洲狼网站狼狼鲁亚洲下载| 2022国产无码在线| 国产成人综合在线观看| 在线日韩日本国产亚洲| 免费日韩在线视频| 在线观看亚洲精品福利片| 亚洲高清在线天堂精品| 91免费国产高清观看| 久久黄色毛片| 亚洲人成色在线观看| aⅴ免费在线观看| 日本精品视频| 国产精品第三页在线看| 无码福利视频| 亚洲黄网在线| 亚洲美女一区| a毛片免费观看| 国产小视频a在线观看| 亚洲国产成人精品无码区性色| 华人在线亚洲欧美精品| 人妻91无码色偷偷色噜噜噜| 国产午夜福利在线小视频| 久久精品国产在热久久2019 | 国产极品嫩模在线观看91| 国产91在线|日本| 国产一区二区三区在线观看视频| 亚洲国产成人自拍| 99久久精品久久久久久婷婷| 国产免费高清无需播放器| 性欧美精品xxxx| 午夜福利视频一区| 欧美色视频日本| 夜夜操狠狠操| 一区二区无码在线视频| 狠狠v日韩v欧美v| 91青青草视频| 日韩国产高清无码| 日日拍夜夜操| 青青青视频蜜桃一区二区| 欧美有码在线观看| 找国产毛片看| 青青操国产视频| 色偷偷av男人的天堂不卡| 久久久国产精品无码专区| 青青草一区二区免费精品| 色综合久久久久8天国| 任我操在线视频| av性天堂网| 亚洲黄色高清| 一本大道无码日韩精品影视| 欧美成人怡春院在线激情| 五月天久久综合| 国产精品亚洲日韩AⅤ在线观看| 国产原创自拍不卡第一页| 国产日产欧美精品| 亚洲中文字幕日产无码2021| 欧美亚洲一区二区三区在线| 亚洲天堂日本| 国产精品自拍合集| 9丨情侣偷在线精品国产| 77777亚洲午夜久久多人| 国产97区一区二区三区无码| 人与鲁专区|