as3 把不透明的区域重新画出来

Posted lingluochengmi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了as3 把不透明的区域重新画出来相关的知识,希望对你有一定的参考价值。

把不透明的区域重新画出来
 
var ht:Sprite=new Sprite();  
ht.graphics.beginFill(0);
for(var x:uint=0;x<_width;x++){  
for(var y:uint=0;y<_height;y++){  
if(bit.bitmapData.getPixel32(x,y)){  
var alphaValue:uint=bit.bitmapData.getPixel32(x,y)>> 24 & 0xFF;
ht.graphics.beginFill(bit.bitmapData.getPixel(x,y),alphaValue/255);  
ht.graphics.drawRect(x,y,1,1);
}  
}
 
1.事件写了之后,MouseEvent.MOUSE_MOVE只在鼠标刚滑入的时候检测,从透明区域都不透明区域滑过时,根本没检测,麻烦,而且代码多
2.画图之后,图片质量下降
 
Sprite有个hitArea的属性:
 
flash.display.Sprite.hitArea(value:Sprite):void
指定一个 sprite 用作另一个 sprite 的点击区域。如果 de>hitAreade> 属性不存在或者其值为 de>nullde> 或de>undefinedde>,则 Sprite 本身将用作点击区域。de>hitAreade> 属性的值可以是对 Sprite 对象的引用。

可以随时更改 de>hitAreade> 属性;修改后的 Sprite 会立即使用新的点击区域行为。指定为点击区域的 Sprite 不必是可见的;虽然不可见,但其图形形状仍会作为点击区域被检测。

注意:必须将指定为点击区域的 Sprite 的 de>mouseEnabledde> 属性设置为 de>falsede>。否则,sprite 按钮可能会不起作用,因为被指定为点击区域的 sprite 会接收用户输入事件而不是您的 sprite 按钮。

 

 

可以不可见的有木有,马上把画得图ht作为hitArea,而且alpha值设置0

 

 

 

mc.addChild(bit);

 

mc.addChild(ht);

 

mc.hitArea = ht;

 

ht.alpha = 0;

 

mc.addEventListener(MouseEvent.MOUSE_MOVE,onMove,false,0,true);

 

mc.addEventListener(MouseEvent.MOUSE_OUT,onOut,false,0,true);

 

 

 

mc的可点击区域马上只有ht,看的图是bit,透明区域不响应鼠标事件了,图片质量也不下降了

 

以上是关于as3 把不透明的区域重新画出来的主要内容,如果未能解决你的问题,请参考以下文章

as3 判断鼠标在非透明区域点击图片

重新填充画布擦除区域的区域

2016/2/24 css画三角形 border的上右下左的调整 以及内区域的无限变小 背景透明

AS3 Loader 不断重新加载相同的 swf

OPENCV图像分割,急急急

ActionScript 3 使用AS3和Flex 4.5重新启动Air Application