最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 网络设计学院 > Flash教程

Flash Copy Pixels位图象素复制

日期:09-11    来源:中国设计秀    作者:cnwebshow.com

除了Flash 8 中自带的各种简单Filter滤镜效果之外,还对bitmapData位图对象提供了非常强大的象素操作。当然,有了象素级的操作,最直接的用途就是我们可以直接控制位图中的每个点,改变他的颜色、位置,能直接创造属于自己的丰富的滤镜,当然,前途是美好的,一定要注意执行效率,虽然Flash Player8的效率已经大为提高,不过我还是在试验各种象素操作中误入超大运算而死机……。4f4中国设计秀

今天的例子是最为简单的一个得到象素并复制到一个新对象中的操作,不过有了这个功能,位图操作的可能性就无限量了。4f4中国设计秀

import flash.display.*;4f4中国设计秀
import flash.geom.*;4f4中国设计秀
//导入本例所需要的二个Pageage4f4中国设计秀

var sourceBD:BitmapData = BitmapData.loadBitmap(”mypic”);4f4中国设计秀
//创建bitmapData对象以用于存放源图片,源图已在库中并命名为mypic4f4中国设计秀

var mc:MovieClip = this.createEmptyMovieClip(”mc”, this.getNextHighestDepth());4f4中国设计秀
mc._x = 25;4f4中国设计秀
mc._y = 100;4f4中国设计秀
mc.attachBitmap(sourceBD,mc.getNextHighestDepth());4f4中国设计秀
//在Stage上创建空MC,并使用MC的attachBitmap方法将刚才创建的bitmapData对象读取到这个MC中4f4中国设计秀

var targetBD:BitmapData = new BitmapData(230, 230, false, 111111);4f4中国设计秀
//创建另一个bitmapData对象作为复制目标4f4中国设计秀

var mc2:MovieClip = this.createEmptyMovieClip(”mc”, this.getNextHighestDepth());4f4中国设计秀
mc2._x = 290;4f4中国设计秀
mc2._y = 100;4f4中国设计秀
mc2.attachBitmap(targetBD,mc.getNextHighestDepth());4f4中国设计秀
//同样在Stage上创建空MC用于存放复制目标4f4中国设计秀

mc.onRollOver = function() {4f4中国设计秀
//当鼠标移动到拥有源图的MC上时,开始CopyPixels4f4中国设计秀
copyPixels();4f4中国设计秀
};4f4中国设计秀
mc.onRollOut = function() {4f4中国设计秀
//移出状态停止Copy4f4中国设计秀
stopcopyPixels();4f4中国设计秀
};4f4中国设计秀
//Copy Pixels Function4f4中国设计秀
function copyPixels() {4f4中国设计秀
this.onMouseMove = function() {4f4中国设计秀
setCursor();//设置鼠标光标4f4中国设计秀
var point:Point = new Point(_xmouse, _ymouse);4f4中国设计秀
mc.globalToLocal(point);4f4中国设计秀
//得到当前鼠标座位,并使用globalToLocal转换为MC内部的坐标值4f4中国设计秀
var rect:Rectangle = new Rectangle(point.x, point.y, 20, 20);4f4中国设计秀
/*创建一个Rectangle对象用以确定要复制的矩形区域4f4中国设计秀
Rectangle对象是Flash8中新增对象,包的位置在flash.geom.Rectangle,flash.geom对象除了拥有Rectangle矩形数据对象之外,还有其它用于存放几何数据的对象类型,包括Point,Tranform等4f4中国设计秀
Rectangle的构造方式为4f4中国设计秀
public Rectangle(x:Number, y:Number, width:Number, height:Number)4f4中国设计秀
x,y:起始座位4f4中国设计秀
width,height:矩形的宽和高,最终将建立一个从 x,y到 x+width,y+height的矩形区域数据4f4中国设计秀
*/4f4中国设计秀
var dest:Point = new Point(point.x, point.y);4f4中国设计秀
//建立dest对象用于存放目标点4f4中国设计秀
targetBD.copyPixels(sourceBD,rect,dest);4f4中国设计秀
/*这里就是本例操作的关键方法,copyPixels,用于将源图中的某个区域的象素复制到当前对象中4f4中国设计秀
构造方式为public copyPixels(sourceBitmap:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmap:BitmapData, alphaPoint:Point, mergeAlpha:Boolean)4f4中国设计秀
sourceBitmap:需要复制的源图,为BitmapData对象类型,这里就套用为前面建立的sourceBD4f4中国设计秀
sourceRect:复制区域4f4中国设计秀
deskPoint:目标点,明确将区域复制到本对象的哪一个位置,本例中完全还原源图的象素所在位置4f4中国设计秀

以下几个参数在本例中都没有使用到4f4中国设计秀
alphaBitmap和alphaPoint:表示可以通过另一个图片用于在复制的时候对源图产生一个alpha通道来创建带alpha通道效果的复制结果.4f4中国设计秀
mergeAlpha的属性是指是否启用源图的alpha通图,但目前没有调试出具体效果,有待再研究.*/4f4中国设计秀
};4f4中国设计秀
}4f4中国设计秀
function stopcopyPixels() {4f4中国设计秀
//停止copyPixels4f4中国设计秀
clearCursor();4f4中国设计秀
delete this.onMouseMove;4f4中国设计秀
}4f4中国设计秀
function setCursor() {4f4中国设计秀
//设置鼠标为方型图案4f4中国设计秀
sourceCursor_mc.swapDepths(_root.getNextHighestDepth());4f4中国设计秀
sourceCursor_mc.startDrag(true);4f4中国设计秀
targetCursor_mc.swapDepths(_root.getNextHighestDepth());4f4中国设计秀
targetCursor_mc._x = sourceCursor_mc._x+265;4f4中国设计秀
targetCursor_mc._y = sourceCursor_mc._y;4f4中国设计秀
Mouse.hide();4f4中国设计秀
}4f4中国设计秀
function clearCursor() {4f4中国设计秀
//恢复鼠标4f4中国设计秀
sourceCursor_mc.stopDrag();4f4中国设计秀
sourceCursor_mc._x = -50;4f4中国设计秀
sourceCursor_mc._y = -50;4f4中国设计秀
targetCursor_mc._x = -50;4f4中国设计秀
targetCursor_mc._y = -50;4f4中国设计秀
Mouse.show();4f4中国设计秀
}4f4中国设计秀

4f4中国设计秀

带alpha通道图象进行复制的例子4f4中国设计秀

4f4中国设计秀