import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Shape;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
import flash.geom.Point;
[SWF(width="400",height="300")]
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
//两张位图
var bd1:Bitmap;
var bd2:Bitmap;
init();
function init():void {
//画一个小圆
var bdp1:BitmapData=new BitmapData(40,40,true,0);//位图数据,正方形,边长40,背景透明,意思是只是图形有效
bdp1.draw(drowMC());//调用绘图函数,这里一个半径为20的圆
bd1=new Bitmap(bdp1);//将数字图形可视化 成为位图
bd1.x=stage.stageWidth/2;/置于舞台中心
bd1.y=stage.stageHeight/2;
addChild(bd1);//添加到显示列表
//画一个大圆
var bdp2:BitmapData=new BitmapData(60,60,true,0);
bdp2.draw(drowMC(30));
bd2=new Bitmap(bdp2);
addChild(bd2);
addEventListener(Event.ENTER_FRAME,_onMouseMove);
}
function _onMouseMove(e:Event):void {
bd2.x=mouseX;//大圆跟随鼠标
bd2.y=mouseY;
//如果发生像素级碰撞
if (bd1.bitmapData.hitTest(new Point(bd1.x,bd1.y),1,bd2.bitmapData,new Point(bd2.x,bd2.y),255)) {
//这里实现你的梦想:……
//为了让你看到效果,就让两个圆都显示滤镜效果:
bd1.filters=[new GlowFilter ];
bd2.filters=[new GlowFilter ];
} else {
//不发生像素级碰撞,就去掉滤镜效果:
bd1.filters=[];
bd2.filters=[];
}
}
//画圆函数------------------------------------
function drowMC(r:Number =20):Sprite {
var _mc:Sprite=new Sprite ;
_mc.graphics.lineStyle(0);
_mc.graphics.beginFill(0xff0000);
_mc.graphics.drawCircle(r,r,r);
_mc.graphics.endFill();
return _mc;
}
望采纳