国产探花免费观看_亚洲丰满少妇自慰呻吟_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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平果县| 肥乡县| 德钦县| 三河市| 南郑县| 绥化市| 新丰县| 佛坪县| 曲麻莱县| 阜城县| 潞城市| 于田县| 炉霍县| 文成县| 体育| 清水河县| 金坛市| 桑植县| 凤山市| 阿鲁科尔沁旗| 金阳县| 禹城市| 保康县| 唐河县| 景泰县| 阿荣旗| 平顺县| 南郑县| 慈溪市| 家居| 凤山县| 东台市| 新乐市| 祁东县| 乌拉特前旗| 白沙| 沙湾县| 阿克陶县| 铁岭市| 晋城| 沙坪坝区|