中易网

flash 基于位图的碰撞检测问题

答案:2  悬赏:50  
解决时间 2021-12-22 02:40
我制作了一个雪花飘落的FLASH小程序,里面包含了一些简单的碰撞检测,比如画一个简单的小房子,让雪花可以堆积在房顶上。但是我突然想到一个问题,假设,我导入一张位图,比如说一张照片,在FLASH当中,能否实现基于位图里面内容的碰撞检测?举个例子,我导入了一张人物的照片,能否让雪花堆积在照片里人物的脸上,头发上,手上?如果能,该如何实现?
最佳答案
北京优普天下 upflash老师为你解答

flash碰撞常用三种。
●两个显示对象碰撞 a_mc.hitTestObject(b_mc)
●一个显示对象和一个点碰撞 a_mc.hitTest(x,y,true)//true表示绘制部分碰撞,否则为矩形碰撞
●还有一个就是位图级别的碰撞。hitTest () 方法

public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9

在一个位图图像与一个点、矩形或其它位图图像之间执行像素级的点击检测。 根据定义,点击区域是指一个不透明像素或两个重叠的不透明像素上的点或矩形的重叠部分。在执行点击测试时,将不会考虑两个对象中任何一个对象的拉伸、旋转或其它变形。

如果某个图像是不透明图像,则此方法会将其视为完全不透明的矩形。 两个图像必须是透明图像才能执行判断透明度的像素级点击测试。 当您在测试两个透明图像时,Alpha 阈值参数将控制哪些 Alpha 通道值(从 0 到 255)将被视为是不透明的。

参数 firstPoint:Point — 任意坐标空间中 BitmapData 图像的左上角的位置。 在定义 secondBitmapPoint 参数时,使用了相同的坐标空间。

firstAlphaThreshold:uint — 最小的 Alpha 通道值,此点击测试将其视为不透明的。

secondObject:Object — 一个 Rectangle、Point、Bitmap 或 BitmapData 对象。

secondBitmapDataPoint:Point (default = null) — 一个点,用于定义第二个 BitmapData 对象中的一个像素位置。 仅当 secondObject 的值是 BitmapData 对象时使用此参数。

secondAlphaThreshold:uint (default = 1) — 最小的 Alpha 通道值,它在第二个 BitmapData 对象中被视为不透明的。仅当 secondObject 的值是 BitmapData 对象,并且这两个 BitmapData 对象都为透明时使用此参数。

返回 Boolean — 如果发生点击,则值为 true;否则为 false。

引发 ArgumentError — secondObject 参数不是 Point、Rectangle、Bitmap 或 BitmapData 对象。

TypeError — firstPoint 为空。

示例

下例将创建一个仅在矩形区域 (20, 20, 40, 40) 中不透明的 BitmapData 对象,然后调用 hitTest() 方法,且使用 Point 对象作为 secondObject。 在第一次调用中,Point 对象定义 BitmapData 对象的左上角,是透明的;在第二次调用中,Point 对象定义 BitmapData 对象的中心,是不透明的。
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000);
var rect:Rectangle = new Rectangle(20, 20, 40, 40);
bmd1.fillRect(rect, 0xFF0000FF);

var pt1:Point = new Point(1, 1);
trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false
var pt2:Point = new Point(40, 40);
trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
全部回答
位图的图像更容易模拟照片的真实效果。其工作方式就像是用画笔在画布上作画一样。如果将这类图形放大到一定的程度,就会发现它是由一个个小方格组成的,这些小方格被称为像素点。一个像素点是图像中最小的图像元素。根据情况而定,有些地方需要用到位图。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
C++ switch语句 case(1~49) 括号里面的东西怎
浣花翁的意思是什么?浣花翁的释义是什么啊?
黜浮的意思是什么?黜浮的释义是什么啊?
出源于尧让天下于许由的成语
高阳苏所村地址在哪,我要去那里办事
隨陽的意思是什么?隨陽的释义是什么啊?
愤风惊浪的意思是什么啊?请解释下!
拳皇97中谁能破安迪的连招?罗伯特?最近同学
有布料600米,做了一批连衣裙,每件2.5米,还
黄宗泽与胡杏儿什么时侯交往又何时分手
博韦干洗店(东官分店)怎么去啊,有事要去办理
莫纳什大学金融专业好吗
時匠的意思是什么?時匠的释义是什么啊?
天津哪个正式高中或教育机构办的复读班比较好
从广州到珠海怎么坐车?四个人玩两天,大概要
推荐资讯
前功尽弃的意思是什么啊?请解释下!
情质的意思是什么?情质的释义是什么啊?
这两个头像哪个好 进来给你们图片
安驰汽修地址在什么地方,我要处理点事
鞋踪的意思是什么?鞋踪的释义是什么啊?
靓点美甲地址好找么,我有些事要过去
怎么才能让电脑运行不了地下城与勇士这个游戏
请问!!现在在东莞开一个小型私人补习班,需
中国制造知名产品有哪些?
老爸以前下井,现在在钢球厂上班,这几天突然
小孩子9岁了,晚上总是很晚才睡,怎么办
夜市保鲜柜不用了需要关掉吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?