加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索

Flash AS3教程:半透明形状的碰撞测试

[日期:2010-12-28] 作者: 来源: [字体: ]

在前面的例子中,我们在每个位图中给制了一个完全不透明的五角星。由于要对每位图中完全不透明的像素进行测试,因此将每个位图中的α阙值设置为255. (实际上可以把α阔值设置为任何大于0的值,其效果是相同的。)

下面来看如何对一个并非完全不透明的形状完成碰撞测试。这里对Bi tmapCo 11 s i onl类稍做修改,将其命名为BitmapCollision2:


这里建立了一个新的名为circle 的Sprite对象,并在其中绘制了一个放射状渐变填充的圆形。将这个图形(而不是五角星)绘制到bmpd2中。进行测试时,在圆形的圆心接触到五角星之前,不会看到出现任何碰撞,因为只有圆心处的像素才是完全不透明的。其结果如图1-5和图1-6所示。

图1-5 五角星接触到圆形,但是相应像素没有达到期望的α阔值

图1-6 只有圆心处的α值为255. 所以此时出现碰撞

修改完成碰撞测试的代码,将第二个α阔值改为一个较小的值,如下所示:
if(bmpd1.hitTest(new Point(bmp1.x, bmp1.y), 255, bmpd2, new Point(bmp2.x, bmp2.y), 128))

现在只需朝着五角星部分移动圆形飞一旦达到α歪少为128的像素时就会出现碰撞。试着将第二个α阑值设置为不同的值来看相应的效果。需要指出,如果将α阔值设置为0 ,甚至圆形尚未接触到五角星,也有可能认为发生了碰撞,因为尽管处于位图拐角的像素完全透明,也能成功地通过碰撞测试。要记住,位图本身仍是一个矩形(尽管你根本看不到它)。还要注意,修改第一个α闽值(设置为任何非0的值〉不会带来任何改变,因为五角星没有半透明的像素——它们要么完全透明,要么完全不透明。

关键词:透明  形状  AS3  碰撞 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
本文评论   查看全部评论 (2)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 2 楼
* 匿名 发表于 2016/12/25 15:18:48
http://www.blue1000.com/bkhtml/c157/2010-10/69400.htm 关爱残疾人作文 http://www.135995.com/details/zs1386.html 我的生日会作文 http://www.135995.com/details/zs1387.html
第 1 楼
* 匿名 发表于 2016/12/24 15:07:58
http://www.blue1000.com/bkhtml/c157/2010-10/69400.htm 家长会主持词开场白 http://www.135995.com/show/17621.html 音乐会主持词开场白 http://www.135995.com/show/17620.html