專利名稱:增強(qiáng)軟件應(yīng)用特征的方法和內(nèi)容對象的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及信息顯示,更具體地,涉及增強(qiáng)軟件應(yīng)用特征的 方法和內(nèi)容對象。
背景技術(shù):
大多數(shù)軟件應(yīng)用已經(jīng)很好地定義了直接寫入軟件應(yīng)用的源代碼的 功能。因此,在編譯源代碼以及部署可執(zhí)行軟件應(yīng)用后,軟件應(yīng)用的 功能是固定的。如果要改變這樣的軟件應(yīng)用的功能或如果要向軟件應(yīng) 用添加新的功能,必須修改軟件應(yīng)用源代碼來并入功能改變或添加。 在改變后,必須重新編譯源代碼以及重復(fù)部署可執(zhí)行軟件應(yīng)用。將理 解,在已經(jīng)編譯軟件應(yīng)用源代碼和部署可執(zhí)行軟件應(yīng)用后,這使得這 樣的軟件應(yīng)用的功能非常剛性并且在沒有相當(dāng)大的費用的情況下幾乎 不可能改變。而且,修改源代碼來并入功能改變或添加要求相當(dāng)多的 編程技能。
例如,軟件應(yīng)用中的拖放功能很普通,并且對本領(lǐng)域技術(shù)人員是 公知的。通常以軟件應(yīng)用源代碼來實現(xiàn)這樣的功能。軟件應(yīng)用源代碼 定義應(yīng)用軟件將接受有效的拖放輸入并且禁止接受未定義而因此無效 的資源對象的資源對象類型。資源對象類型定義應(yīng)用于整個軟件應(yīng)用。 軟件應(yīng)用源代碼包括被編譯成當(dāng)在軟件應(yīng)用上拖放資源對象時處理它 們的庫的軟件例程。不幸的是,在已編譯軟件應(yīng)用源代碼以及部署可 執(zhí)行軟件應(yīng)用后,軟件應(yīng)用的行為是固定的并且不能改變拖放處理例程。除非如上所述,修改和重新編譯軟件應(yīng)用源代碼,否則不能定義 新的有效的拖放資源對象。類似地,在不修改和重新編譯軟件應(yīng)用源 代碼的情況下,不能將現(xiàn)有的拖放資源對象改變成無效的拖放資源對 象。最終結(jié)果是非常靜態(tài)的軟件應(yīng)用。
軟件應(yīng)用中的上述剛性造成其他問題。例如,當(dāng)設(shè)計軟件應(yīng)用時, 軟件應(yīng)用通常針對認(rèn)為其需求大部分是已知的非常公知的終端用戶 群。如果終端用戶具有不同的需求,則通常僅實現(xiàn)對所有終端用戶共 同的功能。最終結(jié)果是軟件應(yīng)用缺乏許多終端用戶所期望的功能并在 功能方面缺乏可變性。
功能的該不靈活在應(yīng)用內(nèi)容創(chuàng)作和演示環(huán)境方面特別成問題。與 軟件應(yīng)用特征不同,內(nèi)容特征需要更加動態(tài),因為內(nèi)容特征必須適合 各個內(nèi)容片斷的每一個的需要,而不是全局地應(yīng)用于用戶庫。換句話 說,內(nèi)容特征針對軟件應(yīng)用內(nèi)的各個內(nèi)容片斷,而不是針對終端用戶。 盡管如上文所述,通常當(dāng)設(shè)想新的內(nèi)容特征時,基于用戶需求來判斷 它并基于功能的最小共同特征來實現(xiàn)它。通常不實現(xiàn)對于大組不要求 的內(nèi)容特征。如上所述,所實現(xiàn)的內(nèi)容特征不幸地要求重新編寫和重 新編譯軟件應(yīng)用源代碼。最終結(jié)果是剛性的并且簡單的內(nèi)容特征。
將理解,特別是在內(nèi)容層級,存在對編程靈活性的需要。因此, 本發(fā)明的目的是提供增強(qiáng)軟件應(yīng)用特征的新穎方法和新穎的內(nèi)容對 象。
發(fā)明內(nèi)容
因此,在一方面中,提供了一種增強(qiáng)在其中執(zhí)行包括編譯的源代 碼的軟件應(yīng)用的計算環(huán)境中的特征的方法。該方法包括將至少一個內(nèi)
容對象插入到軟件應(yīng)用的畫布頁(canvas page)中,每一個內(nèi)容對象包 括定義歸附于(attributed to)該內(nèi)容對象的功能的代碼,響應(yīng)于與該內(nèi) 容對象的交互,執(zhí)行內(nèi)容對象代碼,由此為軟件應(yīng)用功能補充所屬功
7在一個實施例中,所歸附的功能包括在軟件應(yīng)用中不可獲得的功 能。該方法進(jìn)一步包括通過在插入前從組件庫選擇多個功能組件的 一個,創(chuàng)建每一內(nèi)容對象。將每個所創(chuàng)建的內(nèi)容對象存儲在庫中。在 插入期間,從庫拖每個內(nèi)容對象,并將其放在畫布頁上。在創(chuàng)建期間, 將所選擇的組件放在內(nèi)容對象創(chuàng)建頁上。第一被選組件充當(dāng)容器組件, 該容器組件負(fù)責(zé)合并形成內(nèi)容對象的隨后被選的組件。
在一個實施例中,在插入后,變更內(nèi)容對象的所歸附的功能。該 變更包括將消息傳送到內(nèi)容對象并執(zhí)行該消息以便變更代碼??梢栽?在窗口內(nèi)的畫布頁上顯示所插入的內(nèi)容對象。響應(yīng)于與內(nèi)容對象的交 互,可以變更窗口的外觀。內(nèi)容對象可以在執(zhí)行代碼后創(chuàng)建至少一個 新的內(nèi)容對象和/或在執(zhí)行代碼后生成到一個或多個其他內(nèi)容對象的消 息。替代地,內(nèi)容對象可以響應(yīng)于在內(nèi)容對象上產(chǎn)生的資源對象放事 件而執(zhí)行代碼。
根據(jù)另一方面,提供了一種待插入到軟件應(yīng)用的畫布頁中的內(nèi)容 對象,該內(nèi)容對象包括至少一個組件,其與內(nèi)容對象功能相關(guān)聯(lián)并
包括至少一個例程;處理機(jī)(handler),響應(yīng)于與內(nèi)容對象的交互而 執(zhí)行例程;以及通信接口,使得能夠在內(nèi)容對象和軟件應(yīng)用之間進(jìn)行 通信。在運行時創(chuàng)建內(nèi)容對象以補充軟件應(yīng)用的功能。
根據(jù)又一方面,提供了一種將特征添加到編譯軟件應(yīng)用的方法, 包括創(chuàng)建一個或多個內(nèi)容對象,每個內(nèi)容對象可插入到軟件應(yīng)用中 并具有指定的功能;將一個或多個所創(chuàng)建的內(nèi)容對象插入到軟件應(yīng)用
中;以及與一個或多個所插入的所創(chuàng)建的內(nèi)容對象交互以在軟件應(yīng)用 內(nèi)調(diào)用其功能。
將理解,內(nèi)容對象提供內(nèi)容處理靈活性,當(dāng)實現(xiàn)時,在軟件應(yīng)用層級不需要源代碼修改。用該方式,能將不同的內(nèi)容處理特征提供給 不同的終端用戶,提供動態(tài)的內(nèi)容處理。
現(xiàn)在,將參考附圖更全面地描述實施例,其中 圖1是交互式輸入系統(tǒng)的示意圖; 圖2是內(nèi)容對象的框圖3示出了在主機(jī)軟件應(yīng)用畫布頁上顯示的拖放內(nèi)容對象; 圖4是示出了當(dāng)將資源對象拖放到圖3的內(nèi)容對象上時執(zhí)行的步 驟的流程圖5是在主機(jī)軟件應(yīng)用畫布頁上顯示的另一拖放內(nèi)容對象; 圖6是在主機(jī)軟件應(yīng)用畫布頁上顯示的另一拖放內(nèi)容對象; 圖7是在主機(jī)軟件應(yīng)用畫布頁上顯示的又一拖放內(nèi)容對象; 圖8是在主機(jī)軟件應(yīng)用畫布頁上顯示的又一拖放內(nèi)容對象; 圖9是在主機(jī)軟件應(yīng)用畫布頁上顯示的還一拖放內(nèi)容對象; 圖IO是在主機(jī)軟件應(yīng)用畫布頁上顯示的還一拖放內(nèi)容對象。
具體實施例方式
在下述描述中,討論內(nèi)容對象的各個實施例。由開發(fā)人員創(chuàng)建內(nèi) 容對象,以提供內(nèi)容處理靈活性,而不需要在軟件應(yīng)用層級的源代碼 修改。在該例子中,創(chuàng)建用于交互式輸入系統(tǒng)環(huán)境的內(nèi)容對象,盡管 本領(lǐng)域的技術(shù)人員將理解內(nèi)容對象可以用在用戶與顯示內(nèi)容交互的實 際任何環(huán)境中。
現(xiàn)在轉(zhuǎn)到圖l,示出了 Morrison等人的美國專利No. 6,954,197(轉(zhuǎn) 讓給SMART Technologies Inc. of Calgary, Alberta,本申請的受讓人)中 公開的類型的基于照相機(jī)的交互式輸入系統(tǒng)50。交互式輸入系統(tǒng)50包 括觸摸屏52,其包括呈現(xiàn)計算機(jī)生成圖像的觸摸表面53。矩形框(bezel) 或框架環(huán)繞觸摸面53并支撐與其角相鄰的數(shù)碼照相機(jī)Q)至C3。數(shù)碼 照相機(jī)Co至C3具有包圍并且通常掃視觸摸表面53的重疊視場。數(shù)碼照相機(jī)從不同視角獲取掃視觸摸表面53的圖像。由板上數(shù)字信號處理
器處理由數(shù)碼照相機(jī)Co至C3獲取的圖像,以確定在所捕獲的圖像中是
否存在指示器。當(dāng)確定在所捕獲的圖像中存在指示器時,數(shù)字信號處
理器將指示器特征數(shù)據(jù)傳送到主控制器54,主控制器54進(jìn)而處理該指 示器特征數(shù)據(jù),以使用三角測量確定指示器相對于觸摸表面53在(x,y) 坐標(biāo)系中的位置。然后,將指示器坐標(biāo)數(shù)據(jù)傳送到執(zhí)行一個或多個應(yīng) 用程序的計算機(jī)56。計算機(jī)56使用指示器坐標(biāo)數(shù)據(jù)來更新計算機(jī)生成 圖像。然后,將更新的計算機(jī)生成圖像傳送到前或后投影設(shè)備58,用 于在觸摸表面53上顯示。因此,觸摸表面53上的指示器觸點能被記 錄為寫或制圖或用來控制由計算機(jī)56執(zhí)行的主機(jī)軟件應(yīng)用的執(zhí)行。
計算機(jī)56執(zhí)行主機(jī)軟件應(yīng)用,其提供可以放入資源對象和內(nèi)容對 象的畫布頁。內(nèi)容對象提供內(nèi)容處理靈活性,以補充或增強(qiáng)主機(jī)軟件 應(yīng)用的特征集,同時避免與先前所述的軟件應(yīng)用相關(guān)的缺點。在本實 施例中的主機(jī)軟件應(yīng)用由 SMART Technologies, Inc. of Calgary, Alberta提供的,名稱為Notebook 。
在本實施例中,每個內(nèi)容對象包括含一個或多個例程的源代碼。 內(nèi)容對象被公布為Flash或SWF文件,并被插入主機(jī)軟件應(yīng)用的畫布 頁中。因而結(jié)合在NotebookTM中的基礎(chǔ)聚集特征來使用內(nèi)容對象。在 注釋的上下文中,運行內(nèi)容對象源代碼,以此方式,通過內(nèi)容對象采 用特定特征,而不需要修改主機(jī)軟件應(yīng)用源代碼。內(nèi)容對象與遵循消 息協(xié)議的主機(jī)軟件應(yīng)用通信,所述消息協(xié)議安排內(nèi)容對象和主機(jī)軟件 應(yīng)用之間的消息并提供用于在主機(jī)軟件應(yīng)用和內(nèi)容對象之間傳遞信息 和事件的機(jī)制。
內(nèi)容對象中的源代碼利用消息協(xié)議來與主機(jī)軟件應(yīng)用通信。由導(dǎo) 致內(nèi)容對象的行為改變的源代碼來處理內(nèi)容對象從主機(jī)軟件應(yīng)用接收 的消息。內(nèi)容對象也可以將消息返回到主機(jī)軟件應(yīng)用。因此,內(nèi)容對 象充當(dāng)執(zhí)行專門處理的小程序。如將理解的,內(nèi)容對象可以具有變化的功能。例如,源代碼可以提供具有特定于內(nèi)容的拖放功能、腳本功 能、內(nèi)容對象消息傳遞功能、窗口控制功能和/或內(nèi)容對象創(chuàng)建功能的 內(nèi)容對象。然而,本領(lǐng)域技術(shù)人員將理解功能的上述列表絕不意在限 制??梢圆捎锰峁┚哂衅渌δ艿膬?nèi)容對象的源代碼。
在圖2中示出了示例性內(nèi)容對象,并且該內(nèi)容對象通常由參考數(shù)
字100表示。內(nèi)容對象100包括組件調(diào)度器102、每一個包括一個或多 個源代碼例程的一個或多個組件104以及執(zhí)行組件源代碼例程的用于 每個組件104的處理機(jī)106。組件調(diào)度器102作為在組件104、處理機(jī) 106和主機(jī)軟件應(yīng)用之間的通信接口。因為內(nèi)容對象的功能是由組件 104的源代碼例程確定的,所以簡單地通過將具有所需功能的內(nèi)容對象 插入主機(jī)軟件應(yīng)用畫布頁中實現(xiàn)了編程靈活性,而不需要修改底層主 機(jī)軟件應(yīng)用的源代碼?,F(xiàn)在,將參考圖2至10,描述展示各種功能的 內(nèi)容對象的具體例子。
如上所述,源代碼可以提供具有特定于內(nèi)容的拖放功能的內(nèi)容對 象。拖放內(nèi)容特定對象通過允許內(nèi)容對象中的源代碼例程定義內(nèi)容對 象接受的拖放資源對象的類型和將如何處理拖放和接受的資源對象來 擴(kuò)展主機(jī)軟件應(yīng)用的拖放功能。以此方式,各個內(nèi)容對象能以對各個 內(nèi)容對象特定的方式接受和處理所接受的資源對象,以及能展示為每 個所接受的資源對象定義的特定行為。例如,可以創(chuàng)建接受墨跡資源 對象、對墨跡資源對象執(zhí)行字符識別并顯示所識別的文字的內(nèi)容對象。 可以創(chuàng)建接受具有特定名稱或擴(kuò)展名的文件的內(nèi)容對象。可以創(chuàng)建接 受文本資源對象并滾動該文本和接受墨跡資源對象并對墨跡執(zhí)行識別 來在滾動文字前將墨跡資源對象轉(zhuǎn)換成文本的內(nèi)容對象。拖放資源對 象的源可以改變。例如,可以從內(nèi)容聚集(gallery)、計算機(jī)桌面、從 另一內(nèi)容對象、從剪貼板、從網(wǎng)頁等等拖資源對象。
拖放粘性內(nèi)容對象
現(xiàn)在轉(zhuǎn)到圖3,示出了插入到主機(jī)軟件應(yīng)用的畫布頁122的內(nèi)容對象120。本例子中的內(nèi)容對象120是拖放特定于內(nèi)容的"粘性"對象, 其包括兩個組件,即標(biāo)題欄組件130和具線紋的畫布頁組件132。標(biāo)題 欄組件130包括定義標(biāo)題欄組件能接受的資源對象的類型以及如果將 這樣的資源對象拖放到標(biāo)題欄組件130上將如何處理其的例程。在該 例子中,標(biāo)題欄組件130接受文本和鏈接(路徑XML)資源對象。具線 紋的畫布頁組件132也包括定義具線紋的畫布頁組件接受的資源對象 的類型以及如果將這樣的資源對象拖放到具線紋的畫布頁組件132上 將如何處理其的例程。在該例子中,具線紋的畫布頁組件132接受文 本、墨跡和圖形資源對象。
當(dāng)用戶將資源對象從主機(jī)軟件應(yīng)用拖放到內(nèi)容對象120中時,主 機(jī)軟件應(yīng)用將與所拖放的資源對象相關(guān)聯(lián)的文件復(fù)制到計算機(jī)56的臨 時文件系統(tǒng)(圖4中的步驟200),然后向內(nèi)容對象120發(fā)送識別所拖放 的資源對象的類型和位置的査詢消息,以確定所放的資源對象是否可 以被資源對象所放入的內(nèi)容對象120的組件來處理(步驟202)。在接 收査詢消息后,組件調(diào)度器102將査詢消息轉(zhuǎn)發(fā)到內(nèi)容對象120的適 當(dāng)組件104,以驗證資源對象類型(步驟204)。如果資源對象是組件 不支持的類型,則組件130或132通知組件調(diào)度器102,組件調(diào)度器 102進(jìn)而將不接受格式的標(biāo)志返回給主機(jī)軟件應(yīng)用。響應(yīng)于不接受格式 的標(biāo)志,主機(jī)軟件應(yīng)用忽略拖放事件,并且從臨時文件系統(tǒng)刪除與所 拖放的資源對象相關(guān)聯(lián)的文件(步驟206)。在步驟204,如果資源對 象被確定為是組件130或132支持的類型,則組件104通知組件分配 器102,組件調(diào)度器102進(jìn)而將接受標(biāo)志返回給主機(jī)軟件應(yīng)用。組件處 理機(jī)(handler)106進(jìn)而以適當(dāng)方式執(zhí)行組件例程,產(chǎn)生由組件對象120 處理的所放的資源對象。
在該例子中,如果將文本資源對象拖放到內(nèi)容對象120的標(biāo)題欄 組件130中,則由組件處理機(jī)106執(zhí)行的標(biāo)題欄組件導(dǎo)致所放的文本 包套(wrap)在內(nèi)容對象120內(nèi)并顯示在標(biāo)題欄組件130中。如果將 墨跡資源對象拖放到標(biāo)題欄組件130中,則由組件處理機(jī)106執(zhí)行的標(biāo)題欄組件例程導(dǎo)致將墨跡轉(zhuǎn)換成文本并且將結(jié)果文本包套在特定于
內(nèi)容的對象120中并顯示在標(biāo)題欄組件130中。為獲得墨跡到文本的 轉(zhuǎn)換,組件處理機(jī)106指示主機(jī)軟件應(yīng)用執(zhí)行墨跡到文本轉(zhuǎn)換,以及 將所轉(zhuǎn)換的文本返回給內(nèi)容對象120。以此方式,內(nèi)容對象利用主機(jī)軟 件應(yīng)用的源代碼,由此簡化內(nèi)容對象源代碼。
如果將文本、墨跡或圖形資源對象拖放到具線紋的畫布頁組件132 中,則由組件處理機(jī)106執(zhí)行的具線紋的畫布頁組件例程導(dǎo)致所放的 對象包套在內(nèi)容對象內(nèi)并顯示在具線紋的畫布頁組件132上。如將理 解的,內(nèi)容對象120允許將資源對象注入("粘貼")其中并顯示。如 果從主機(jī)軟件應(yīng)用拖新的有效資源對象,并放在標(biāo)題欄組件130上或 具線紋的畫布頁組件132上,則將新的有效資源對象注入其中,并顯 示,導(dǎo)致重寫(overwite)先前的資源對象。
圖像復(fù)制器內(nèi)容對象
圖5示出了插入在主機(jī)軟件應(yīng)用中并顯示在其畫布頁122上的另 一內(nèi)容對象220。在該例子中的內(nèi)容對象220是復(fù)制資源對象并包括畫 布頁組件226的圖像復(fù)制器。與畫布頁組件226相關(guān)聯(lián)的例程接受圖 形資源對象。當(dāng)從主機(jī)軟件應(yīng)用拖資源對象224并將其放入畫布頁組 件226中時,主機(jī)軟件應(yīng)用以先前所述的方式存儲資源對象文件,并 且將資源對象包套在內(nèi)容對象220中并顯示在畫布頁組件226上。當(dāng) 顯示在畫布頁組件226上的資源對象被拖出內(nèi)容對象并放在主機(jī)軟件 應(yīng)用畫布頁122上時,組件處理機(jī)106執(zhí)行畫布頁組件例程。
在執(zhí)行畫布頁組件例程后,組件處理機(jī)106初始地計算所拖放的 圖形資源對象的大小和位置。然后,組件處理機(jī)106創(chuàng)建包括描述所 放的資源對象的代碼的XML文件。然后,將XML文件包套在適當(dāng)?shù)?XML標(biāo)簽中。組件處理機(jī)106經(jīng)組件調(diào)度器102將XML文件傳遞到 主機(jī)軟件應(yīng)用,組件調(diào)度器102進(jìn)而將XML文件解析成其構(gòu)成,在這 種情況下,為圖形資源對象文件。然后,主機(jī)軟件應(yīng)用將圖形資源對象文件保存到文件系統(tǒng)目錄并將所放的圖形資源對象插入到其畫布頁
122中的所計算的位置處。在任何將由內(nèi)容對象220顯示的資源對象 224拖出內(nèi)容對象并放在主機(jī)軟件應(yīng)用畫布頁122上時這都會發(fā)生。資 源對象保持顯示在圖像復(fù)制器內(nèi)容對象220上,直到從主機(jī)軟件應(yīng)用 拖新的資源對象并將其放在圖像復(fù)制器內(nèi)容對象220中。當(dāng)將新的資 源對象放在內(nèi)容對象220中并且由主機(jī)軟件應(yīng)用保存資源對象文件時, 將新的資源對象包套在內(nèi)容對象中,由此重寫先前的資源對象并在畫 布頁組件226上顯示新的資源對象。
關(guān)于拖放粘性內(nèi)容對象120,如果從主機(jī)軟件應(yīng)用拖不支持的資 源對象,并將其放在內(nèi)容對象220上,則內(nèi)容對象220通知主機(jī)軟件 應(yīng)用,導(dǎo)致圖像復(fù)制器內(nèi)容對象忽略該拖放事件。
路線跟隨器內(nèi)容對象
圖6示出了插入到主機(jī)軟件應(yīng)用中并顯示在其畫布頁122上的另 一內(nèi)容對象320。在該例子中的內(nèi)容對象是以具有單一組件的人的形式 的路線跟隨器圖形。與組件相關(guān)聯(lián)的例程接受路線XML資源對象。當(dāng) 從主機(jī)軟件應(yīng)用拖路線XML資源對象324并將其放在內(nèi)容對象320上 時,主機(jī)軟件應(yīng)用如上所述存儲資源對象文件,并且組件處理機(jī)106 執(zhí)行組件例程。在執(zhí)行組件例程后,組件處理機(jī)106指示主機(jī)軟件應(yīng) 用沿與所放的路線XML資源對象的路線相對應(yīng)的路線在畫布頁122內(nèi) 移動主圖形。這通過順序地調(diào)用基于路線XML資源對象的坐標(biāo)設(shè)置內(nèi) 容對象320的位置的方法來實現(xiàn)。
關(guān)于上述的內(nèi)容對象,如果從主機(jī)軟件應(yīng)用拖不支持的資源對象 并將其放在內(nèi)容對象320上,則內(nèi)容對象320通知主機(jī)軟件應(yīng)用,導(dǎo) 致內(nèi)容對象320忽略拖放事件。
循環(huán)的多路線跟隨器
圖7示出了插入到主機(jī)軟件應(yīng)用中并顯示在其畫布頁122上的另一內(nèi)容對象420。在本例子中的內(nèi)容對象420是以具有單一組件的蜜蜂 蜂房的形式的圖形。與組件相關(guān)聯(lián)的例程接受路線XML資源對象。當(dāng) 從主機(jī)軟件應(yīng)用拖路線XML資源對象424并將其放在內(nèi)容對象420上 時,主機(jī)軟件應(yīng)用如前所述存儲資源對象文件,并且組件處理機(jī)106 執(zhí)行組件例程。在執(zhí)行組件例程后,創(chuàng)建蜜蜂圖形428,并將其安置在 主機(jī)軟件應(yīng)用的畫布頁122中。還調(diào)用適當(dāng)?shù)姆椒▉碓跓o限循環(huán)中沿 與所放的路線XML資源對象的路線相對應(yīng)的路線移動蜜蜂圖形428。 對被放在內(nèi)容對象420上的每個路線資源對象,顯示和移動新的蜜蜂 圖形428。
關(guān)于上述的內(nèi)容對象,如果從主機(jī)軟件應(yīng)用拖不支持的資源對象, 并將其放在內(nèi)容對象420上,則內(nèi)容對象420通知主機(jī)軟件應(yīng)用,導(dǎo) 致內(nèi)容對象420忽略拖放事件。
計數(shù)器內(nèi)容對象
圖8示出了插入到主機(jī)軟件應(yīng)用并顯示在其畫布頁122上的另一 內(nèi)容對象520。本例子中的內(nèi)容對象520是具有數(shù)字組件和畫布組件的 計數(shù)器。與數(shù)字組件相關(guān)聯(lián)的例程接受數(shù)字文本資源對象和數(shù)字墨跡 資源對象。與畫布組件相關(guān)聯(lián)的例程接受圖形資源對象。當(dāng)從主機(jī)軟 件應(yīng)用拖圖形資源對象524并將其放在畫布組件上時,主機(jī)軟件應(yīng)用 如上所述存儲資源對象文件并將資源對象包套在內(nèi)容對象中,并將其 顯示在計數(shù)器內(nèi)容對象520的畫布組件上。利用顯示在畫布組件上的 資源對象,當(dāng)從主機(jī)軟件應(yīng)用拖文本數(shù)字或墨跡數(shù)字對象528并將其 放在數(shù)字組件中時,組件處理機(jī)106執(zhí)行數(shù)字組件例程。在執(zhí)行數(shù)字 組件例程后,數(shù)字組件處理機(jī)106將資源對象524復(fù)制到主機(jī)軟件應(yīng) 用的畫布頁122中n次,其中,n是插入到數(shù)字組件中的數(shù)字資源對象 的值。
關(guān)于上述的內(nèi)容對象,如果從主機(jī)軟件應(yīng)用拖不支持的資源對象, 并將其放在內(nèi)容對象520上,則內(nèi)容對象通知主機(jī)軟件應(yīng)用,導(dǎo)致內(nèi)容對象520忽略拖放事件。
圖像修剪器內(nèi)容對象
圖9示出了插入到主機(jī)軟件應(yīng)用中并顯示在其畫布頁122上的另 一內(nèi)容對象620。該例子中的內(nèi)容對象620是具有畫布頁組件的圖像修 剪器內(nèi)容對象。與畫布頁組件相關(guān)聯(lián)的例程接受圖形資源對象類型。 當(dāng)從主機(jī)軟件應(yīng)用拖圖形資源對象624并將其放在內(nèi)容對象620上時, 主機(jī)軟件應(yīng)用如前所述存儲資源對象文件,并將資源對象包套在內(nèi)容 對象中并顯示在畫布頁組件上。利用所顯示的資源對象,用戶可以通 過操作窗口 628來選擇所顯示的資源對象的區(qū)域。在適當(dāng)?shù)囟ㄎ淮翱?后,選擇注入軟按鈕630使得組件處理機(jī)106執(zhí)行組件例程。在執(zhí)行 例程后,計算用于在窗口 628內(nèi)所顯示的資源對象的部分632的畫布 頁位置。將在窗口內(nèi)顯示的部分632的副本插入畫布頁122的所計算 的位置處。
與其他拖放特定于內(nèi)容的對象類似,如果從主機(jī)軟件應(yīng)用拖不支 持的資源對象并將其放在內(nèi)容對象上,則內(nèi)容對象通知主機(jī)軟件應(yīng)用, 導(dǎo)致內(nèi)容對象620忽略拖放事件。
收銀機(jī)內(nèi)容對象
圖10示出了插入到主機(jī)軟件應(yīng)用中并顯示在其畫布頁122上的另 一內(nèi)容對象720。該例子中的內(nèi)容對象是具有單個組件的收銀機(jī)。與組 件相關(guān)聯(lián)的例程接受墨跡數(shù)字資源對象。當(dāng)從主機(jī)軟件應(yīng)用拖墨跡數(shù) 字資源對象724并將其放在收銀機(jī)內(nèi)容對象720上時,主機(jī)軟件應(yīng)用 如前所述存儲資源對象文件。然后,組件處理機(jī)106執(zhí)行組件例程, 導(dǎo)致將墨跡轉(zhuǎn)換成文本并且將結(jié)果文本包套在內(nèi)容對象中并由內(nèi)容對 象720顯示。當(dāng)從主機(jī)軟件應(yīng)用拖每個墨跡數(shù)字資源對象并將其放在 收銀機(jī)內(nèi)容對象上時,組件處理機(jī)106維護(hù)所輸入的數(shù)字的計數(shù) (tally)。當(dāng)選擇內(nèi)容對象720的改變軟按鈕730時,與用于圖形資源 對象的畫布頁位置一起,創(chuàng)建類似于計數(shù)量中的硬幣的圖形資源對象
16732。將所創(chuàng)建的圖形資源對象傳遞給組件調(diào)度器102,組件調(diào)度器102 進(jìn)而將圖形資源對象通信到主機(jī)軟件應(yīng)用。在接收圖形資源對象后, 主機(jī)軟件應(yīng)用在畫布頁122上顯示圖形資源對象,并隨機(jī)地移動硬幣 圖形資源對象預(yù)定次數(shù)。
關(guān)于上述的拖放內(nèi)容對象,如果從主機(jī)軟件應(yīng)用拖不支持的資源 對象并將其放在內(nèi)容對象720上,則內(nèi)容對象720通知主機(jī)軟件應(yīng)用, 導(dǎo)致忽略拖放事件。
百寶箱
盡管未示出,內(nèi)容對象也可以采用百寶箱的形式,包括接受各種 不同資源對象的單個組件。當(dāng)從主機(jī)軟件應(yīng)用拖資源對象并將其放在 百寶箱上時,主機(jī)軟件應(yīng)用如前所述保存資源對象文件,并通知內(nèi)容 對象。不顯示被拖放在內(nèi)容對象上的資源對象。當(dāng)在執(zhí)行在內(nèi)容對象 上開始的拖操作后進(jìn)行主機(jī)軟件應(yīng)用的畫布頁122上的放事件時,任 意地復(fù)制先前已經(jīng)拖放在內(nèi)容對象上的資源對象的一個,然后將其插 入在主機(jī)軟件應(yīng)用的畫布頁122中。
腳本內(nèi)容對象
如先前所述,可以對內(nèi)容對象編程以便接受包含被設(shè)計為調(diào)用內(nèi) 容對象內(nèi)的操作或計算類型的腳本代碼的腳本消息。加載到內(nèi)容對象 上的腳本消息可以改變內(nèi)容對象的用戶界面行為或內(nèi)容對象內(nèi)的圖形 的行為??梢允褂媚_本消息來改變可視屬性(諸如內(nèi)容對象的背景色 彩或透明度)、改變畫布頁122上的內(nèi)容對象的位置、向內(nèi)容對象(諸 如新的按鈕等)增加功能、增加新的或改變內(nèi)容對象的處理能力,以 使得響應(yīng)于與內(nèi)容對象的交互而執(zhí)行新的或不同的動作。在這種情況 下,內(nèi)容對象包括腳本消息處理機(jī)以處理所接收的腳本消息。每個腳 本消息包含指定腳本的類型和寫腳本的語言的元信息。在接收腳本消 息后,內(nèi)容對象的腳本消息處理機(jī)檢驗?zāi)_本消息來確定它是否支持腳 本的類型以及它是否支持在腳本消息中指定的語言。在該實施例中,腳本消息是XML結(jié)構(gòu)。示例性腳本消息如下
<Script type="behavior" language="ActionScript" call="movetoandhide(10,10),,> function move(x,y) {
this.moveTo(x,y);
function setLocation(x,y)(
this. setLocation(x,y)
function hide" { this.—visible =false;}
Function movetoandhide(x, y) {
move(x,y);
hide();
movetoandhide( 10,10);
<Script〉
如果內(nèi)容對象支持腳本消息,則腳本消息處理機(jī)加載腳本消息并 進(jìn)行腳本消息調(diào)用來執(zhí)行腳本消息。以此方式,在不要求部署新的內(nèi) 容對象的情況下,可以對組件例程和內(nèi)容對象外觀進(jìn)行改變。
將理解,通過使內(nèi)容對象能夠接受腳本,可以通過在運行時將腳 本代碼插入內(nèi)容對象,然后執(zhí)行腳本代碼來動態(tài)地改變內(nèi)容對象的行 為,來控制內(nèi)容對象的行為和外觀。所加載的腳本消息變?yōu)閮?nèi)容對象 的一部分,允許內(nèi)容對象的內(nèi)容在發(fā)布后動態(tài)地改變。當(dāng)在內(nèi)容對象 內(nèi)執(zhí)行腳本消息時,從內(nèi)部改變內(nèi)容對象的行為。
消息傳遞內(nèi)容對象
另外,也可以對內(nèi)容對象編程以將消息發(fā)送到其他內(nèi)容對象或從其他內(nèi)容對象接收消息。以此方式,內(nèi)容對象能夠向內(nèi)容對象發(fā)送指 示發(fā)生特定事件的消息。接收這樣的消息的內(nèi)容對象處理消息,導(dǎo)致
內(nèi)容對象樣式或外觀改變。在該實施例中,消息是以XML格式并包括
數(shù)據(jù)和腳本。內(nèi)容對象包括用于處理所接收的內(nèi)容對象消息的消息處 理機(jī)和用于廣播消息的消息發(fā)射器。當(dāng)內(nèi)容對象接收內(nèi)容對象消息時, 根據(jù)由消息處理機(jī)執(zhí)行的源代碼例程來處理消息,并執(zhí)行適當(dāng)?shù)牟僮鳌?這可以包括例如改變內(nèi)容對象的外觀或其行為。對內(nèi)容對象編程以接
受某些消息類型。當(dāng)接收輸入的內(nèi)容對象消息時,消息處理機(jī)106檢 查消息,以確定它是否是內(nèi)容對象支持的類型。如果不是,則忽略該 消息。如果內(nèi)容對象消息是內(nèi)容對象支持的類型,則處理該消息???以由內(nèi)容對象將消息廣播到在主機(jī)軟件應(yīng)用的畫布頁122上顯示的所 有其他內(nèi)容對象或定向于特定的內(nèi)容對象。
窗口控制內(nèi)容對象
典型地,當(dāng)將內(nèi)容對象插入到主機(jī)軟件應(yīng)用時,主機(jī)軟件應(yīng)用控 制內(nèi)容對象如何出現(xiàn)并在畫布頁上如何被操作。例如,主機(jī)軟件應(yīng)用 典型地控制內(nèi)容對象的大小、內(nèi)容對象如何移動、如何刪除內(nèi)容對象、 圍繞內(nèi)容對象的窗口如何出現(xiàn)以及內(nèi)容對象的透明色彩。因此,內(nèi)容 對象不控制其在畫布上的外觀和感覺。
為解決上述問題,可以為內(nèi)容對象提供允許內(nèi)容對象控制其在主 機(jī)軟件應(yīng)用的畫布頁122內(nèi)的周圍窗口顯示屬性和操作其在主機(jī)軟件 應(yīng)用的畫布頁內(nèi)的大小、位置和模式的機(jī)制。以此方式,內(nèi)容對象可 以定義其周圍窗口的顯示屬性,諸如顯示或隱藏邊框和標(biāo)題欄、設(shè)置 欄中的標(biāo)題、設(shè)置透明色彩等等。也可以定義周圍窗口的行為,諸如 位置、大小、關(guān)閉運動等等。在這種情況下,內(nèi)容對象包括窗口方法 調(diào)用的庫。響應(yīng)于與內(nèi)容對象的交互,將根據(jù)窗口方法調(diào)用的窗口參 數(shù)發(fā)送到主機(jī)軟件應(yīng)用。作為響應(yīng),主機(jī)軟件應(yīng)用使用窗口參數(shù)來更 新圍繞內(nèi)容對象的窗口的可視外觀。盡管將窗口消息描述為發(fā)送到主機(jī)軟件應(yīng)用,但是本領(lǐng)域技術(shù)人 員將理解窗口消息也可以被發(fā)送到操作系統(tǒng)中的窗口子系統(tǒng)或代表操 作系統(tǒng)起作用的代理應(yīng)用。
畫布注入內(nèi)容對象
另外,可以對內(nèi)容對象編程來創(chuàng)建另一內(nèi)容對象并且將所創(chuàng)建的 內(nèi)容對象傳送到主機(jī)軟件應(yīng)用,用于插入在畫布頁中。內(nèi)容對象計算 用于所創(chuàng)建的內(nèi)容對象的可視屬性和行為屬性,以使得所創(chuàng)建的內(nèi)容 對象在畫布頁上以適當(dāng)?shù)姆绞骄哂兴谕目梢曂庥^和行為。所創(chuàng)建 的內(nèi)容對象可以包括放置在XML文件中的圖形資源和文本資源對象。 將XML文件包套在適當(dāng)?shù)腦ML標(biāo)簽中,使其適合于插入到畫布頁122 中。在所創(chuàng)建的內(nèi)容對象可用后,將XML文件以文本文檔的形式傳遞 到主機(jī)軟件應(yīng)用。主機(jī)軟件應(yīng)用進(jìn)而解析XML文本來將XM L文本分 解成其組成圖形或文本資源對象。然后,由主機(jī)軟件應(yīng)用將圖形和文 本資源對象保存到目錄中,并將其插入到畫布頁中。
將理解,提供上述例子用于說明目的。內(nèi)容對象的組件可以采用 許多形式并且可被編程為接受各種資源對象,并以基本上任何所期望 的方式操作(即處理)所接受的資源對象。例如,可以對組件的例程 編程以接受具有特定名稱或擴(kuò)展名的資源對象。也可以對組件的例程 編程以接受聚集(gallery)資源對象,即以zip文件形式的資源對象, 每一個包括多個子對象,諸如動畫、音頻和文本。在聚集資源對象的 情況下,當(dāng)將聚集資源對象拖放在被編程為處理聚集資源對象的內(nèi)容 對象中時,由組件處理機(jī)106執(zhí)行適當(dāng)?shù)睦虒?dǎo)致以編程的方式解包 和處理的聚集資源對象的組件。當(dāng)聚集資源對象包套在內(nèi)容對象中時, 如果將聚集資源對象的子對象拖出內(nèi)容對象并將其放在主機(jī)軟件應(yīng)用 的畫布頁上時,將整個聚集資源對象從內(nèi)容對象拖放出,而不僅僅是 所選擇的子對象組件。
將理解,在拖放內(nèi)容對象的創(chuàng)建期間,結(jié)合將處理拖放輸入的方
20式,由內(nèi)容開發(fā)人員定義用于內(nèi)容對象的拖放輸入的類型,諸如圖形、 文本、墨跡等等。如果需要改變資源對象處理,則可以由內(nèi)容開發(fā)人 員創(chuàng)建并部署新的拖放內(nèi)容對象。因此,避免了對修改應(yīng)用源代碼來 實現(xiàn)內(nèi)容處理變化的需要。
為了創(chuàng)建展示上述功能或其他功能的內(nèi)容對象,提供了工具包。 工具包包括組件庫,存儲可用內(nèi)容對象組件和相關(guān)聯(lián)的例程的列表。 可以從列表拖組件庫中的內(nèi)容對象組件并將其放在內(nèi)容對象創(chuàng)建畫布 上。例如,組件庫中的內(nèi)容對象組件可以包括允許將圖形資源對象復(fù) 制到畫布頁上的無限復(fù)制器、允許將圖形資源對象添加到工具欄上的 工具欄容器、允許識別文本對象的文本識別器、允許窗口圍繞內(nèi)容對 象的窗口容器、允許資源對象跟隨所繪制的線的路線跟隨器、允許創(chuàng) 建動畫圖像的動畫器、允許通過新的功能在屏幕上播放視頻的視頻播 放器等等。
根據(jù)分配給所創(chuàng)建的內(nèi)容對象的功能,可以在內(nèi)容對象創(chuàng)建畫布 上分組各種內(nèi)容對象組件來形成內(nèi)容對象。當(dāng)創(chuàng)建包括多于一個組件 的內(nèi)容對象時,將從組件庫拖出并放在內(nèi)容對象創(chuàng)建畫布上的第一組 件指定為容器組件。容器組件負(fù)責(zé)合并將形成所創(chuàng)建的內(nèi)容對象的其 他組件。在已經(jīng)創(chuàng)建具有所需功能的內(nèi)容對象后,將內(nèi)容對象從內(nèi)容 對象創(chuàng)建畫布拖到保存所創(chuàng)建的內(nèi)容對象的內(nèi)容對象庫中。從內(nèi)容對 象庫,可以將內(nèi)容對象拖到主機(jī)軟件應(yīng)用的畫布頁122上。
如果需要,可以為組件庫的組件提供有當(dāng)首次將組件拖到內(nèi)容對 象創(chuàng)建畫布上時露出的下拉屬性菜單。下拉屬性菜單中的屬性允許從 預(yù)裝缺省值改變用于組件的屬性。在改變后,隱藏屬性下拉菜單,禁 止進(jìn)一步改變組件的屬性。
盡管已經(jīng)描述了實施例,但是本領(lǐng)域技術(shù)人員將理解在不背離其 精神和范圍的情況下可以進(jìn)行變化和修改。
權(quán)利要求
1. 一種增強(qiáng)在其中執(zhí)行包括編譯代碼的軟件應(yīng)用的計算環(huán)境中的特征的方法,所述方法包括將至少一個內(nèi)容對象插入到所述軟件應(yīng)用的畫布頁中,每個所述內(nèi)容對象包括定義歸附于所述內(nèi)容對象的功能的代碼,響應(yīng)于與所述內(nèi)容對象的交互而執(zhí)行所述內(nèi)容對象代碼,由此為軟件應(yīng)用功能補充所歸附的功能。
2. 如權(quán)利要求l所述的方法,其中,所歸附的功能包括在所述軟 件應(yīng)用中不可獲得的功能。
3. 如權(quán)利要求2所述的方法,進(jìn)一步包括通過在所述插入前從組件庫選擇多個功能組件中的一個,來創(chuàng)建 每個內(nèi)容對象。
4. 如權(quán)利要求3所述的方法,進(jìn)一步包括將每個所創(chuàng)建的內(nèi)容對象存儲在庫中,其中,在所述插入期間, 從所述庫拖每個所述內(nèi)容對象并將其放在所述畫布頁上。
5. 如權(quán)利要求3所述的方法,其中,在所述創(chuàng)建期間,將所選擇的組件放在內(nèi)容對象創(chuàng)建頁上,第一被選組件充當(dāng)容器組件,該容器 組件負(fù)責(zé)合并形成所述內(nèi)容對象的隨后被選的組件。
6. 如權(quán)利要求l所述的方法,進(jìn)一步包括 在所述插入后,變更所述內(nèi)容對象的所歸附的功能。
7. 如權(quán)利要求6所述的方法,其中,所述變更包括 將消息傳送到所述內(nèi)容對象;以及執(zhí)行所述消息,由此變更所述代碼。
8. 如權(quán)利要求7所述的方法,其中,所述消息是腳本。
9. 如權(quán)利要求l所述的方法,進(jìn)一步包括在窗口內(nèi)的所述畫布頁上顯示所插入的內(nèi)容對象。
10. 如權(quán)利要求9所述的方法,進(jìn)一步包括 響應(yīng)于與所述內(nèi)容對象的交互,變更所述窗口的外觀。
11. 如權(quán)利要求1所述的方法,其中,所述內(nèi)容對象在執(zhí)行所述 代碼后創(chuàng)建至少一個新的內(nèi)容對象,所述新的內(nèi)容對象被插入到所述 畫布頁中。
12. 如權(quán)利要求1所述的方法,其中,所述內(nèi)容對象在執(zhí)行所述 代碼后生成到一個或多個其他內(nèi)容對象的消息。
13. 如權(quán)利要求1所述的方法,其中,所述內(nèi)容對象響應(yīng)于在所 述內(nèi)容對象上產(chǎn)生的資源對象放事件而執(zhí)行所述代碼。
14. 如權(quán)利要求13所述的方法,其中,所述內(nèi)容對象在執(zhí)行所述 代碼后復(fù)制所放的資源對象的最少的部分。
15. —種待插入到軟件應(yīng)用的畫布頁的內(nèi)容對象,所述內(nèi)容對象包括至少一個組件,其與內(nèi)容對象功能相關(guān)聯(lián)并包括至少一個例程; 處理機(jī),其響應(yīng)于與所述內(nèi)容對象的交互而執(zhí)行所述例程;以及 通信接口,其使得能夠在所述內(nèi)容對象和所述軟件應(yīng)用之間進(jìn)行 通信,所述內(nèi)容對象在運行時被創(chuàng)建以補充所述軟件應(yīng)用的功能。
16. 如權(quán)利要求15所述的內(nèi)容對象,其中,每個組件與不同的內(nèi)容對象功能相關(guān)聯(lián)。
17. 如權(quán)利要求16所述的內(nèi)容對象,其中,所述處理機(jī)響應(yīng)于所 述源代碼例程的執(zhí)行而生成用于所述主機(jī)軟件應(yīng)用的指令。
18. 如權(quán)利要求16所述的內(nèi)容對象,進(jìn)一步包括用于每個所述組 件的處理機(jī)。
19. 如權(quán)利要求16所述的內(nèi)容對象,其中,所述內(nèi)容對象的源代 碼被發(fā)布成SWF文件。
20. 如權(quán)利要求15所述的內(nèi)容對象,其中,所述處理機(jī)響應(yīng)于在 所述內(nèi)容對象上進(jìn)行的資源對象放事件而執(zhí)行所述例程。
21. —種向編譯軟件應(yīng)用添加特征的方法,包括 創(chuàng)建一個或多個內(nèi)容對象,每個所述內(nèi)容對象可被插入到所述軟件應(yīng)用中并具有指定的功能;將一個或多個所創(chuàng)建的內(nèi)容對象插入到所述軟件應(yīng)用中;以及 與一個或多個所插入的所創(chuàng)建的內(nèi)容對象交互,以在所述軟件應(yīng)用內(nèi)調(diào)用其功能。
22. 如權(quán)利要求21所述的方法,其中,所述指定的功能在所述插 入后可改變。
23. 如權(quán)利要求21所述的方法,其中,在所述創(chuàng)建期間,通過從 組件庫選擇多個功能組件中的一個來創(chuàng)建每個內(nèi)容對象。
24. 如權(quán)利要求21所述的方法,進(jìn)一步包括 將每個所創(chuàng)建的內(nèi)容對象存儲在庫中,其中,在所述插入期間,從所述庫拖每個所述內(nèi)容對象,并將其放在所述軟件應(yīng)用中。
25. 如權(quán)利要求21所述的方法,進(jìn)一步包括在窗口內(nèi)顯示所插入的內(nèi)容對象。
26. 如權(quán)利要求25所述的方法,進(jìn)一步包括 響應(yīng)于與所述內(nèi)容對象的交互,變更所述窗口的外觀。
27. 如權(quán)利要求21所述的方法,其中,所述交互包括執(zhí)行與一個 或多個所插入的所創(chuàng)建的內(nèi)容對象相關(guān)的鼠標(biāo)事件。
28. 如權(quán)利要求27所述的方法,其中,所述鼠標(biāo)事件是資源對象 拖放事件。
全文摘要
一種增強(qiáng)在其中執(zhí)行包括編譯的源代碼的軟件應(yīng)用的計算環(huán)境中的特征的方法,該方法包括將至少一個內(nèi)容對象插入到軟件應(yīng)用的畫布頁中。每個內(nèi)容對象包括定義歸附于內(nèi)容對象的功能的代碼。響應(yīng)于與內(nèi)容對象的交互,執(zhí)行內(nèi)容對象代碼,由此為軟件應(yīng)用功能補充所屬功能。
文檔編號G06F9/40GK101427216SQ200780013931
公開日2009年5月6日 申請日期2007年4月17日 優(yōu)先權(quán)日2006年4月17日
發(fā)明者科爾瑞·桑諾艾 申請人:智能技術(shù)Ulc公司