返回列表 回复 发帖

随意切割位图实验

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

AS绘图test.fla (128 KB)

AS绘图test.swf (62.51 KB)

向大家学习!

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

mc.beginBitmapFill(bmpImage,new Matrix(),false);   //标识位图填充开始
改成:
mc.beginBitmapFill(bmpImage,new Matrix(n,0,0,n),false,true); //n为放大倍数
向大家学习!
顶,学习
good
顶起来
asfox.blogbus.com
基于SFS的flash网游及应用基础知识
没话说了。顶。。学习。。
HAO
好贴!顶!
谢谢楼主!
拜服!
我的全flash小站http://www.ourme.cn
  支持
分享是一种快乐,交流才可以提高 http://www.rgb123.net
这是个好东西
我要好好学学
返回列表