国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

8.10.檢測像素級別的碰撞

2024-04-27 13:52:04
字體:
來源:轉載
供稿:網友
8.10.1. 問題
我需要檢查是否有帶有alpha 透明度的圖像區域與其他圖像發生碰撞。
8.10.2. 解決辦法
繪制兩個圖像到一個BitmapData 對象,并使用BitmapData.hitTest 方法。
8.10.3. 討論
BitmapData 對象擁有一個hitTest 方法,和DisplayObject 定義的hitTest 方法工作方法相似但有一個明顯的例外:而DisplayObject 的hitTest 方法返回true,如果點和對象的范圍相交,BitmapData 的hitTest 方法返回true,如果點的像素超過了某個透明度的門檻。這里是這個方法的特點:
+展開
-ActionScript
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean

如果一個圖像是不透明的,他被這個方法認為是一個完全不透明的矩形,兩個圖像必須被認為是透明的才能執行像素級碰撞測試。當你測試兩個透明圖像時,alpha threshold 參數控制alpha 通道的值,從0 到255,被認為是不透明的。這個方法的參數如下:
firstPoint:Point
BitmapData 圖像在任意坐標空間的左上角位置。相同的坐標位置被用來定義secondBitmapPoint 參數。

firstAlphaThreshold:uint
在這個測試中被認為是不透明的最高的alpha 通道值。

secondObject:Object
一個矩形,點,位圖,或BitmapData 對象。

secondBitmapDataPoint:Point (default = null)
這個點定義了一個在第二BitmapData 對象中的像素位置。只有當secondObject 的值是BitmapData 對象時使用這個參數。

secondAlphaThreshold:uint (default = 1)
在第二個BitmapData 對象中被認為是不透明的最大的alpha 通道值。只有當secondObject的值是BitmapData 對象并且兩個BitmapData 對象都是透明的時使用這個參數。

在下面的代碼例子中,每一個矩形圖形的角上,對一個帶有alpha 透明度的PNG 文件進行碰撞測試:
+展開
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlwidth="1500"
height="900">

<mx:Script>
<![CDATA[
import flash.display.BlendMode;
private var mainBmp:BitmapData;
private var dragBmp:BitmapData;
private var hasDrawn:Boolean = false;
private function loaded():void{
if(!hasDrawn){
mainBmp = new BitmapData(
mainImg.width, mainImg.height,true,0x00000000);
dragBmp = new BitmapData(
dragImg.width, dragImg.height, true, 0x00000000);
hasDrawn = true;
this.addEventListener(Event.ENTER_FRAME, showHits);
}
}
private function showHits(event:Event):void
{
mainBmp.draw(mainImg);
dragBmp.draw(dragImg);
if(mainBmp.hitTest(new Point(0,0), 0xff,
dragImg.getBounds(this).topLeft)){
trace(" true ");
return;
}
if(mainBmp.hitTest(new Point(0,0), 0xff,
dragImg.getBounds(this). bottomRight)){
trace(" true ");
return;
}
if(mainBmp.hitTest(new Point(0,0), 0xff, new
Point(dragImg.getBounds(this).left,
dragImg.getBounds(this).bottom))){
trace(" true ");
return;
}
if(mainBmp.hitTest(new Point(0,0), 0xff, new
Point(dragImg.getBounds (this).right,
dragImg.getBounds(this).top))){
trace(" true ");
return;
}
trace(" false ");
}

]]>
</mx:Script>
<mx:Image id="mainImgsource="../assets/alphapng.png"
cacheAsBitmap="true"/>

<mx:Image cacheAsBitmap="trueid="dragImg"
mouseDown="dragImg.startDrag(false, this.getBounds(stage)),
loaded()
rollOut="dragImg.stopDrag()"
mouseUp="dragImg.stopDrag()"
source="../assets/bigshakey.png"/>

</mx:Canvas>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铁力市| 都安| 鄢陵县| 正定县| 泰宁县| 关岭| 奉节县| 佛教| 辽阳市| 腾冲县| 甘南县| 罗源县| 南江县| 永平县| 巴马| 丰顺县| 新郑市| 松滋市| 二手房| 外汇| 乐昌市| 青州市| 兴安盟| 三穗县| 吉木萨尔县| 武宁县| 海城市| 泗洪县| 中牟县| 厦门市| 茶陵县| 通榆县| 陇南市| 沙坪坝区| 沂源县| 新竹县| 务川| 应城市| 军事| 桃江县| 兴业县|