專利名稱:一種基于像素的頂層對象檢測及鼠標(biāo)事件檢測方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及第三代功能腳本(AS3, ActionScript)中的對象檢測技術(shù),特 別是涉及一種基于像素的頂層對象檢測方法和裝置、以及基于像素的鼠標(biāo)事件 檢測方法和裝置。
背景技術(shù):
ActionScript是針對Adobe Flash Player運行時環(huán)境的編程語言,它在Flash 內(nèi)容和應(yīng)用程序中實現(xiàn)了交互性、數(shù)據(jù)處理以及其它許多功能。ActionScript是 由Flash Player中的ActionScript虛擬機(AVM)來執(zhí)行的。
隨著ActionScript的不斷發(fā)展,出現(xiàn)了第三代Flash腳本ActionScript 3.0, 簡稱AS3, AS3的腳本編寫功能超越了 ActionScript的早期版本,旨在方便創(chuàng) 建擁有大型數(shù)據(jù)集和面向?qū)ο蟮目芍赜么a庫的高度復(fù)雜應(yīng)用程序。
目前在AS3中,目標(biāo)對象是以矢量為基礎(chǔ)的,位圖在Flash中均被看作矩 形來對待。也就是說,如果AS3用戶欲釆用位圖作為顯示對象(displayobject), 那么,所有的位圖都會被當(dāng)作矩形來看,位圖的透明區(qū)域也被認(rèn)為是不透明的 矩形,從而導(dǎo)致頂層對象不能準(zhǔn)確地被識別。例如假設(shè)當(dāng)前的顯示對象是在 某實物前面放置一個鐵環(huán),那么,當(dāng)點擊鐵環(huán)中心時,由于鐵環(huán)中間部分是空 的,即屬于透明區(qū)域,實際頂層對象是鐵環(huán)后面的實物,應(yīng)該點擊到實物,而 現(xiàn)有技術(shù)將位圖的透明區(qū)域也看作不透明的矩形,那么,點擊鐵環(huán)中心時不會 認(rèn)為點擊到的頂層對象是實物,而會錯誤的識別頂層對象為鐵環(huán)平面。
同樣,在AS3中,鼠標(biāo)事件(MouseEvent)和鼠標(biāo)位置是最重要的人機交 互途徑,其中,鼠標(biāo)位置是指AS3鼠標(biāo)坐標(biāo)的總結(jié)。 一般,當(dāng)鼠標(biāo)移動到目標(biāo) 對象之上時會觸發(fā)鼠標(biāo)事件;或鼠標(biāo)在目標(biāo)對象之上移動、按下、松開、轉(zhuǎn)動滾輪時會觸發(fā)鼠標(biāo)事件。而現(xiàn)有鼠標(biāo)事件系統(tǒng)中,所有的位圖顯示對象會被當(dāng) 作與位圖大小相同的不透明的矩形區(qū)域處理,顯示對象中透明鏤空部分不會被 穿透,這樣就會導(dǎo)致對顯示對象識別錯誤,從而產(chǎn)生錯誤的鼠標(biāo)事件。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種基于像素的頂層對象檢測方法 和裝置,能準(zhǔn)確獲取和識別基于像素的任意點目標(biāo)顯示對象。
本發(fā)明進一步的目的在于提供一種基于像素的鼠標(biāo)事件檢測方法和裝置, 能對顯示對象實現(xiàn)像素級的準(zhǔn)確識別和處理。
為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的 本發(fā)明提供了一種基于像素的頂層對象檢測方法,包括 獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量; 遍歷數(shù)組中的每個顯示對象像素點,確定顯示對象當(dāng)前像素點是否為透明。 其中,所述基本變量包括偏移矩陣、像素繪制區(qū)域、位圖緩存大小以及繪
制區(qū)域的起始點;所述設(shè)置基本變量為將所述基本變量設(shè)置為成員變量。 上述方案中,所述確定顯示對象當(dāng)前像素點是否為透明具體為在當(dāng)前像
素點顯示對象為位圖對象時,調(diào)用bitmapData.hitTest函數(shù)進行透明判決;在當(dāng)
前點像素顯示對象為其他對象時,提取需判斷的像素點進行繪制、比較,確定
是否透明。
上述方案中,所述繪制、比較過程具體為提取像素點,并創(chuàng)建一個像素 大小的位圖數(shù)據(jù)緩沖區(qū),根據(jù)偏移矩陣和繪制區(qū)域?qū)⒛繕?biāo)對象中需要檢測的點 的像素值,繪制到創(chuàng)建好的一個像素大小的位圖數(shù)據(jù)緩沖區(qū)中;檢測緩沖區(qū)中 該像素的ot值,確定當(dāng)前像素點是否透明,如果oc值為零,則像素點透明;如果 a值不為零,則像素點不透明。
本發(fā)明還提供了一種基于像素的頂層對象檢測裝置,包括初始化單元、像 素點透明狀態(tài)確定單元;其中,
初始化單元,用于獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量;像素點透明狀態(tài)確定單元,用于遍歷數(shù)組中的每個顯示對象像素點,確定 顯示對象當(dāng)前像素點是否為透明。
上述方案中,所述像素點透明狀態(tài)確定單元還包括對象類型判別單元和 處理單元;其中,所述對象類型判別單元,用于確定當(dāng)前像素點顯示對象為位 圖對象、或文本區(qū)域?qū)ο?、或其他對象,并將確定的對象類型送至處理單元; 所述處理單元,用于接收對象類型判別單元發(fā)來的當(dāng)前像素點顯示對象的類型, 在當(dāng)前像素點顯示對象為位圖對象時,調(diào)用bitmapData.hitTest函數(shù)進行透明判 決;在當(dāng)前點像素顯示對象為其他對象時,提取需判斷的像素點進行繪制、比 較,確定是否透明。
上述方案中,所述處理單元進一步包括像素點提取單元、繪制位置計算 單元、位圖數(shù)據(jù)創(chuàng)建單元、像素點繪制單元以及像素點判別單元;其中,像素 點提取單元,用于提取當(dāng)前顯示對象的像素點;繪制位置計算單元,用于根據(jù) 偏移矩陣確定繪制位圖的位置;位圖數(shù)據(jù)創(chuàng)建單元,用于創(chuàng)建一個像素大小的 位圖數(shù)據(jù);像素點繪制單元,用于將像素點繪制到該位圖的緩存中;像素點判 別單元,用于根據(jù)緩存的a值確定當(dāng)前像素點是否透明。
本發(fā)明又提供了一種基于像素的鼠標(biāo)事件檢測方法,包括
監(jiān)聽stage的鼠標(biāo)事件;
偵聽到鼠標(biāo)事件后,獲取鼠標(biāo)點擊點對應(yīng)的顯示對象; 由獲取的顯示對象產(chǎn)生對應(yīng)的事件,并由事件處理函數(shù)處理所產(chǎn)生的鼠標(biāo) 事件;
其中,所述獲取鼠標(biāo)點擊點對應(yīng)的顯示對象為獲取確定透明或不透明屬性 的像素點顯示對象,所述確定透明或不透明屬性包括獲取所有目標(biāo)顯示對象 像素點的數(shù)組,并設(shè)置基本變量;遍歷數(shù)組中的每個顯示對象像素點,確定顯 示對象當(dāng)前像素點是否透明。
本發(fā)明還提供了一種基于像素的鼠標(biāo)事件檢測裝置,包括鼠標(biāo)事件監(jiān)聽 單元、顯示對象獲取單元、事件產(chǎn)生及處理單元;其中,
所述鼠標(biāo)事件監(jiān)聽單元,用于監(jiān)聽stage的鼠標(biāo)事件;所述顯示對象獲取單元,用于在偵聽到鼠標(biāo)事件后,獲取鼠標(biāo)點擊點對應(yīng)
的顯示對象;
所述事件產(chǎn)生及處理單元,由顯示對象產(chǎn)生對應(yīng)的事件,并由事件處理函 數(shù)處理所產(chǎn)生的鼠標(biāo)事件;
其中,所述顯示對象獲取單元還包括初始化單元、像素點透明狀態(tài)確定 單元;所述初始化單元,用于獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基 本變量;所述像素點透明狀態(tài)確定單元,用于遍歷數(shù)組中的每個顯示對象像素 點,確定顯示對象當(dāng)前像素點是否為透明。
本發(fā)明所提供的基于像素的頂層對象檢測及鼠標(biāo)事件檢測方法和裝置,將 目標(biāo)顯示對象按像素點處理,分別確認(rèn)每個像素點目標(biāo)對象是否透明,如此, 就可以高效地獲得任意一點基于像素的目標(biāo)顯示對象,從而過濾掉位圖中的透 明區(qū)域,使位圖中的透明區(qū)域不會再被作為不透明的矩形來處理,進而準(zhǔn)確地 識別頂層對象。
進一步的,基于像素級檢測,在鼠標(biāo)事件系統(tǒng)中,所有的顯示對象都會被 當(dāng)作像素級顯示對象來處理,如此,能夠準(zhǔn)確地提取出目標(biāo)點的最頂層不透明
對象,準(zhǔn)確完成2D圖形引擎中基本的目標(biāo)拾取功能,從而為Flash成為基于位 圖的2D圖形引擎的目標(biāo)選擇提供了基礎(chǔ)。
圖1為本發(fā)明基于像素的頂層對象檢測方法的實現(xiàn)流程示意圖; 圖2為本發(fā)明基于像素的鼠標(biāo)事件檢測方法的實現(xiàn)流程示意圖。
具體實施例方式
本發(fā)明的基本思想是將目標(biāo)顯示對象按像素點處理,分別確認(rèn)每個像素 點顯示對象是否透明,從而過濾掉位圖中的透明區(qū)域,準(zhǔn)確識別頂層對象。 本發(fā)明基于像素的頂層對象檢測方法如圖l所示,包括以下步驟 步驟101:以像素點為單位,獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)
8置基本變量;
這里,所述獲取所有目標(biāo)顯示對象像素點的數(shù)組是指獲取目標(biāo)顯示對象
的每個像素點,分別作為一個數(shù)組元素依次放置在數(shù)組中,具體如何獲取像素
點為已有技術(shù),可采用var arr:Arra)^JheStage.getObjectsUnderPoint(stagePt)的 方式獲取,在此不再詳述。
這里,所述基本變量包括偏移矩陣、像素繪制區(qū)域、位圖緩存(buffer)
大小以及繪制區(qū)域的起始點,具體可采用以下方式設(shè)置基本變量 var _mat:Matrix=new Matrix; var —rt:Rectangle=new Rectangle(O,O, 1 , 1);
var —bitData:BitmapData=new BitmapData(_rt. width, 一rt.height,true); var _ptStart:Point=new Point; 為了簡化步驟,避免在多次實現(xiàn)時每次進行初始化,可將上述基本變量設(shè) 置為成員變量,相應(yīng)的,在函數(shù)實現(xiàn)時可直接作為一個類的成員函數(shù)實現(xiàn)。具 體可采用以下方式設(shè)置為成員變量 private var _mat:Matrix=new Matrix; private var_rt:Rectangle=new Rectangle(O,O,l,l);
private var_bitData:BitmapData=newBitmapData(_rt. width, —rt.height,true); private var_ptStart:Point=new P0int5
步驟102:從上到下遍歷數(shù)組中的每個顯示對象像素點,確定顯示對象當(dāng) 前像素點是否為透明。
這里,所述從上到下是指按數(shù)組下標(biāo)的前后順序從前向后,并且,數(shù)組下 標(biāo)順序與顯示對象從上到下的層次關(guān)系是對應(yīng)的。
具體如何確定當(dāng)前像素點是否為透明可采用以下步驟
步驟102a:如果當(dāng)前像素點顯示對象是位圖(bitmap)對象,則直接調(diào)用 bitmapData.hitTest函數(shù)進行判斷是否透明;
這里,bitmapData.hitTest為已有函數(shù),具有判斷像素是否透明的功能。
步驟102b:如果當(dāng)前像素點顯示對象是文本區(qū)域(TextField)對象,則直接認(rèn)為是不透明;
這里,由于TextFidd對象的繪制方法調(diào)用時會改變鼠標(biāo)焦點,影響系統(tǒng)表 現(xiàn),所以直接確認(rèn)為不透明,不進行繪制。
步驟102c:如果當(dāng)前像素點顯示對象是其他對象,則提取需要判斷的像素 點進行繪制、比較,確定是否透明;
這里,所述其他對象是指不可識別的對象;那么,相應(yīng)的處理方式就是創(chuàng)
建一個像素大小的位圖數(shù)據(jù)bitmapdata,繪制一個像素,如此可大大提高效率。 上述過程中,檢測當(dāng)前像素點顯示對象屬于哪種類型的對象具體是判斷對 應(yīng)的數(shù)組元素的屬性值,如if(air[i〗is Bitmap )、 if( arr[i] is TextField)等等,就 是判斷數(shù)組中第i個數(shù)組元素的屬性值是否為位圖對象或文本區(qū)域等。
其中,具體的繪制、比較過程是這樣提取像素點,并創(chuàng)建一個像素大小 的位圖數(shù)據(jù)緩沖區(qū),根據(jù)偏移矩陣和繪制區(qū)域?qū)⒛繕?biāo)對象中需要檢測的點的像 素值,繪制到創(chuàng)建好的一個像素大小的位圖數(shù)據(jù)緩沖區(qū)中;檢測buffer中該像 素的a值,確定當(dāng)前像素點是否透明,如果ct值為零,則像素點透明;如果a值 不為零,則像素點不透明。這里,像素點的繪制區(qū)域、繪制區(qū)域的起始點以及 位圖buffer的大小均在設(shè)置基本變量時設(shè)置好。
這里,可通過調(diào)用bitmapdata的方法,來實現(xiàn)將檢測點的像素值繪制到位 圖數(shù)據(jù)緩沖區(qū)的搡作,關(guān)鍵在于選擇合適的偏移矩陣。
例如采用—bitData.draw(arr[i],—mat,null,null,_rt),表示將第i個數(shù)組元素的 對象按照偏移矩陣—mat繪制 一個像素的矩型區(qū)域一rt到buffer —bitData。
為實現(xiàn)上述方法,本發(fā)明還提出了一種基于像素的頂層對象檢測裝置,包 括初始化單元、像素點透明狀態(tài)確定單元,其中,
初始化單元,用于獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量; 像素點透明狀態(tài)確定單元,用于遍歷數(shù)組中的每個顯示對象像素點,確定 顯示對象當(dāng)前像素點是否為透明;
進一步的,像素點透明狀態(tài)確定單元包括對象類型判別單元和處理單元; 具體的,所述對象類型判別單元,用于確定當(dāng)前像素點顯示對象為位圖對象、或文本區(qū)域?qū)ο?、或其他對象,并將確定的對象類型送至處理單元;
所述處理單元,用于接收對象類型判別單元發(fā)來的當(dāng)前像素點顯示對象的 類型,在當(dāng)前像素點顯示對象為位圖對象時,調(diào)用bitmapData.hitTest函數(shù)進行 透明判決;在當(dāng)前像素點顯示對象為文本區(qū)域?qū)ο髸r,直接確定為不透明;在 當(dāng)前點像素顯示對象為其他對象時,提取需判斷的像素點進行繪制、比較,確 定是否透明。
當(dāng)處理單元對當(dāng)前點像素顯示對象為其他對象的情況進行處理時,該處理 單元可進一步包括像素點提取單元、繪制位置計算單元、位圖數(shù)據(jù)創(chuàng)建單元、
像素點繪制單元以及像素點判別單元;其中,像素點提取單元,用于提取當(dāng)前 顯示對象的像素點;繪制位置計算單元,用于根據(jù)偏移矩陣確定繪制位圖的位 置;位圖數(shù)據(jù)創(chuàng)建單元,用于創(chuàng)建一個像素大小的位圖數(shù)據(jù);像素點繪制單元, 用于將像素點繪制到該位圖的buffer中;像素點判別單元,用于根據(jù)buffer的a 值確定當(dāng)前像素點是否透明。
在上述基于像素的頂層對象檢測方案的基礎(chǔ)上,結(jié)合鼠標(biāo)事件的檢測,本 發(fā)明又提出一種基于像素的鼠標(biāo)事件檢測方法,如圖2所示,包括以下步驟
步驟201:監(jiān)聽舞臺(stage)的鼠標(biāo)事件;
這里,所述鼠標(biāo)事件包括但不限于按下鼠標(biāo)、釋放鼠標(biāo)、移動鼠標(biāo)、鼠 標(biāo)進入顯示對象、鼠標(biāo)離開顯示對象等等。
步驟202:偵聽到鼠標(biāo)事件后,獲取鼠標(biāo)點擊點對應(yīng)的顯示對象;
這里,所述偵聽到鼠標(biāo)事件就是指檢測到鼠標(biāo)被按下、或鼠標(biāo)被釋放、或 鼠標(biāo)移動;所述獲取鼠標(biāo)點擊點對應(yīng)的顯示對象為獲取確定透明或不透明屬性 的像素點顯示對象,所述確定像素點顯示對象透明或不透明屬性,就是利用圖 l所述的方法,包括獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量; 遍歷數(shù)組中的每個顯示對象像素點,確定顯示對象當(dāng)前像素點是否透明。
步驟203:由獲取的顯示對象產(chǎn)生對應(yīng)的事件,并由事件處理函數(shù)處理所 產(chǎn)生的鼠標(biāo)事件。
下面結(jié)合兩個具體應(yīng)用實例說明基于像素的鼠標(biāo)事件檢測方法的實現(xiàn)。
ii應(yīng)用實例一普通鼠標(biāo)事件檢測的實現(xiàn)過程
步驟ll:監(jiān)聽stage的鼠標(biāo)事件,這里的鼠標(biāo)事件為按下鼠標(biāo)、釋放鼠標(biāo)、 移動鼠標(biāo)等等;
步驟12:偵聽到鼠標(biāo)事件后,獲取鼠標(biāo)點擊點對應(yīng)的顯示對象a;這里所
述獲取采用圖1所示的方法獲取相應(yīng)的像素點顯示對象;
步驟13:顯示對象a產(chǎn)生對應(yīng)的事件;比如鼠標(biāo)被按下對應(yīng)的事件為
a,dispatchEvent(newMouseEvent("downOnPixel");
步驟14:由事件處理函數(shù)處理所產(chǎn)生的鼠標(biāo)事件。
應(yīng)用實例二進入顯示對象或離開顯示對象的鼠標(biāo)事件的實現(xiàn)過程
步驟21:監(jiān)聽stage的鼠標(biāo)事件,同時啟動定時器(timer)定時檢測鼠標(biāo)
點下的對象;
步驟22:偵聽到timer事件或鼠標(biāo)移動事件后,獲取鼠標(biāo)點的顯示對象a; 這里所述獲取采用圖l所示的方法獲取相應(yīng)的像素點顯示對象;
步驟23:如果當(dāng)前顯示對象與上一次的顯示對象lasta不同,則對lasta產(chǎn) 生鼠標(biāo)離開事件lasta.dispatchEvent(new MouseEvent("leaveOnPixel"),同時對顯 示對象a產(chǎn)生鼠標(biāo)進入事件a.dispatchEvent(new MouseEvent("enterOnPixel"), 并保存顯示對象a為上一次的顯示對象lasta;
步驟24:由事件處理函數(shù)處理所產(chǎn)生的鼠標(biāo)事件。
為實現(xiàn)所述的鼠標(biāo)事件檢測方法,本發(fā)明還提出一種基于像素的鼠標(biāo)事件 檢測裝置,包括鼠標(biāo)事件監(jiān)聽單元、顯示對象獲取單元、事件產(chǎn)生及處理單 元;其中,
所述鼠標(biāo)事件監(jiān)聽單元,用于監(jiān)聽stage的鼠標(biāo)事件; 所述顯示對象獲取單元,用于在偵聽到鼠標(biāo)事件后,獲取鼠標(biāo)點擊點對應(yīng) 的顯示對象;
所述事件產(chǎn)生及處理單元,由顯示對象產(chǎn)生對應(yīng)的事件,并由事件處理函 數(shù)處理所產(chǎn)生的鼠標(biāo)事件。
其中,所述顯示對象獲取單元實際就是基于像素的頂層對象檢測裝置,利用基于像素的頂層對象檢測裝置的組成和功能,完成鼠標(biāo)點擊點所對應(yīng)顯示對 象的獲取,得到具有透明或不透明屬性的顯示對象。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范 圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng) 包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1、一種基于像素的頂層對象檢測方法,其特征在于,該方法包括獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量;遍歷數(shù)組中的每個顯示對象像素點,確定顯示對象當(dāng)前像素點是否為透明。
2、 根據(jù)權(quán)利要求l所述的頂層對象檢測方法,其特征在于,所述基本變量 包括偏移矩陣、像素繪制區(qū)域、位圖緩存大小以及繪制區(qū)域的起始點;所述設(shè)置基本變量為將所述基本變量設(shè)置為成員變量。
3、 根據(jù)權(quán)利要求1或2所述的頂層對象檢測方法,其特征在于,所述確定 顯示對象當(dāng)前像素點是否為透明具體為-.在當(dāng)前像素點顯示對象為位圖對象時,調(diào)用bitmapData.hitTest函數(shù)進行透 明判決;在當(dāng)前點像素顯示對象為其他對象時,提取需判斷的像素點進行繪制、 比較,確定是否透明。
4、 根據(jù)權(quán)利要求3所述的頂層對象檢測方法,其特征在于,所述繪制、比 較過程具體為提取像素點,并創(chuàng)建一個像素大小的位圖數(shù)據(jù)緩沖區(qū),根據(jù)偏 移矩陣和繪制區(qū)域?qū)⒛繕?biāo)對象中需要檢測的點的像素值,繪制到創(chuàng)建好的一個 像素大小的位圖數(shù)據(jù)緩沖區(qū)中;檢測緩沖區(qū)中該像素的ot值,確定當(dāng)前像素點 是否透明,如果oc值為零,則像素點透明;如果oc值不為零,則像素點不透明。
5、 一種基于像素的頂層對象檢測裝置,其特征在于,該裝置包括初始化單 元、像素點透明狀態(tài)確定單元;其中,初始化單元,用于獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量; 像素點透明狀態(tài)確定單元,用于遍歷數(shù)組中的每個顯示對象像素點,確定 顯示對象當(dāng)前像素點是否為透明。
6、 根據(jù)權(quán)利要求5所述的頂層對象檢測裝置,其特征在于,所述像素點透 明狀態(tài)確定單元還包括對象類型判別單元和處理單元;其中,所述對象類型判別單元,用于確定當(dāng)前像素點顯示對象為位圖對象、或文 本區(qū)域?qū)ο蟆⒒蚱渌麑ο?,并將確定的對象類型送至處理單元;所述處理單元,用于接收對象類型判別單元發(fā)來的當(dāng)前像素點顯示對象的類型,在當(dāng)前像素點顯示對象為位圖對象時,調(diào)用bitmapData.hitTest函數(shù)進行透明判決;在當(dāng)前點像素顯示對象為其他對象時,提取需判斷的像素點進行繪制、比較,確定是否透明。
7、 根據(jù)權(quán)利要求6所述的頂層對象檢測裝置,其特征在于,所述處理單元進一步包括像素點提取單元、繪制位置計算單元、位圖數(shù)據(jù)創(chuàng)建單元、像素點繪制單元以及像素點判別單元;其中,像素點提取單元,用于提取當(dāng)前顯示對象的像素點;繪制位置計算單元,用于根據(jù)偏移矩陣確定繪制位圖的位置;位圖數(shù)據(jù)創(chuàng)建單元,用于創(chuàng)建一個像素大小的位圖數(shù)據(jù);像素點繪制單元,用于將像素點繪制到該位圖的緩存中;像素點判別單元,用于根據(jù)緩存的a值確定當(dāng)前像素點是否透明。
8、 一種基于像素的鼠標(biāo)事件檢測方法,其特征在于,該方法包括監(jiān)聽舞臺stage的鼠標(biāo)事件;偵聽到鼠標(biāo)事件后,獲取鼠標(biāo)點擊點對應(yīng)的顯示對象;由獲取的顯示對象產(chǎn)生對應(yīng)的事件,并由事件處理函數(shù)處理所產(chǎn)生的鼠標(biāo)事件;其中,所述獲取鼠標(biāo)點擊點對應(yīng)的顯示對象為獲取確定透明或不透明屬性的像素點顯示對象,所述確定透明或不透明屬性包括獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量;遍歷數(shù)組中的每個顯示對象像素點,確定顯示對象當(dāng)前像素點是否透明。
9、 根據(jù)權(quán)利要求8所述的鼠標(biāo)事件檢測方法,其特征在于,所述確定顯示對象當(dāng)前像素點是否為透明具體為在當(dāng)前像素點顯示對象為位圖對象時,調(diào)用bitmapData.hitTest函數(shù)進行透明判決;在當(dāng)前點像素顯示對象為其他對象時,提取需判斷的像素點進行繪制、比較,.確定是否透明。
10、 一種基于像素的鼠標(biāo)事件檢測裝置,其特征在于,該裝置包括鼠標(biāo)事件監(jiān)聽單元、顯示對象獲取單元、事件產(chǎn)生及處理單元;其中,所述鼠標(biāo)事件監(jiān)聽單元,用于監(jiān)聽stage的鼠標(biāo)事件;所述顯示對象獲取單元,用于在偵聽到鼠標(biāo)事件后,獲取鼠標(biāo)點擊點對應(yīng)的顯示對象;所述事件產(chǎn)生及處理單元,由顯示對象產(chǎn)生對應(yīng)的事件,并由事件處理函數(shù)處理所產(chǎn)生的鼠標(biāo)事件;其中,所述顯示對象獲取單元還包括初始化單元、像素點透明狀態(tài)確定單元;所述初始化單元,用于獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量;所述像素點透明狀態(tài)確定單元,用于遍歷數(shù)組中的每個顯示對象像素點,確定顯示對象當(dāng)前像素點是否為透明。
11、根據(jù)權(quán)利要求io所述的鼠標(biāo)事件檢測裝置,其特征在于,所述像素點透明狀態(tài)確定單元還包括對象類型判別單元和處理單元;其中,所述對象類型判別單元,用于確定當(dāng)前像素點顯示對象為位圖對象、或文本區(qū)域?qū)ο蟆⒒蚱渌麑ο?,并將確定的對象類型送至處理單元;所述處理單元,用于接收對象類型判別單元發(fā)來的當(dāng)前像素點顯示對象的類型,在當(dāng)前像素點顯示對象為位圖對象時,調(diào)用bitmapData.hitTest函數(shù)進行透明判決;在當(dāng)前點像素顯示對象為其他對象時,提取需判斷的像素點進行繪制、比較,確定是否透明。
全文摘要
本發(fā)明公開了一種基于像素的頂層對象檢測方法,包括獲取所有目標(biāo)顯示對象像素點的數(shù)組,并設(shè)置基本變量;遍歷數(shù)組中的每個顯示對象像素點,確定顯示對象當(dāng)前像素點是否為透明。本發(fā)明還同時公開了一種基于像素的頂層對象檢測裝置、以及一種基于像素的鼠標(biāo)事件檢測方法和裝置,采用本發(fā)明準(zhǔn)確獲取和識別基于像素的任意點目標(biāo)顯示對象,能對顯示對象實現(xiàn)像素級的準(zhǔn)確識別和處理。
文檔編號G06F9/44GK101630254SQ200910091470
公開日2010年1月20日 申請日期2009年8月21日 優(yōu)先權(quán)日2009年8月21日
發(fā)明者黃朝興 申請人:騰訊科技(深圳)有限公司