发新话题
打印

[分享] 随意切割位图实验

随意切割位图实验

原创:ybzjllj
效果:用鼠标随意画一个形状,拖动此形状,就从原图上切出绘图区域的图来。
注意:非遮罩,感觉比就遮罩简单
使用了:AS绘图、位图对象、位图填充
复制内容到剪贴板
代码:
import flash.display.BitmapData;
import flash.geom.Matrix;
//导入一张图片,放在舞台上,转为MC,实例名为“原图”
//“mc”是用来在里面绘图的
var 原图:MovieClip, mc:MovieClip;
var 画线 = false;//画线标志
var bmpImage:BitmapData=new BitmapData(原图._width,原图._height);//创建位图对象
bmpImage.draw(原图,new Matrix());//用“原图”描绘位图对象
//当鼠标按下时
原图.onPress = function() {
if (mc.hitTest(_xmouse, _ymouse, true)) {
  mc.startDrag();  //如果鼠标在mc上,就开始拖动它   
} else {
  //按下鼠标时,鼠标不在复制的MC上,启动画线
  画线 = true;
  mc = this.createEmptyMovieClip("mc", 1);//创建空MC,此操作会同时删除原来绘的图,如果不想删除原来的,就改用数组。
  mc.lineStyle(1, 0xFF0000);  //线条样式
  mc.beginBitmapFill(bmpImage,new Matrix(),false);   //标识位图填充开始
  mc.moveTo(_xmouse-this._x, _ymouse-this._y); //移动画线起点到此
}
};
原图.onMouseUp = function() {
if (画线) {
  画线 = false;
  mc.endFill(); //填充结束
} else {
  mc.stopDrag();
}
};
原图.onMouseMove = function() {
if (画线) {
  mc.lineTo(_xmouse-this._x, _ymouse-this._y); //如果画线状态为真,移动鼠标就画线  
}
};

附件

AS绘图test.fla (128 KB)

2007-1-19 15:59, 下载次数: 1139

AS绘图test.swf (62.51 KB)

2007-1-19 15:59, 下载次数: 1935

向大家学习!

TOP

如果使用放大填充,可改这一处:

mc.beginBitmapFill(bmpImage,new Matrix(),false);   //标识位图填充开始
改成:
mc.beginBitmapFill(bmpImage,new Matrix(n,0,0,n),false,true); //n为放大倍数
向大家学习!

TOP

顶,学习

TOP

good

TOP

顶起来
asfox.blogbus.com
基于SFS的flash网游及应用基础知识

TOP

没话说了。顶。。学习。。
http://steamlin.flash8.net
网站建设/域名、空间租用..www.china-space.cn
蓝莫名博http://www.20click.com/cn/index.php?u=steamlin

TOP

HAO

TOP

好贴!顶!

TOP

谢谢楼主!

TOP

拜服!
我的全flash小站http://www.ourme.cn

TOP

  支持
分享是一种快乐,交流才可以提高

TOP

这是个好东西
我要好好学学

TOP

发新话题