快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Flash 8 Copy Pixels位图象素复制

Flash 8 Professional Copy Pixels位图象素复制
Author:Allan
转载请注明出处:Allan.Blog()

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

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

import flash.display.*;
import flash.geom.*;
//导入本例所需要的二个Pageage

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

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

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

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

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

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

« Full Screen »

带alpha通道图象进行复制的例子

« Full Screen »



需要Flash Player 8 [源文件下载,需要FLASH 8]

例子比较简朴,不过看起来已经是Photoshop图章功能的拙形了。当然,假如用Flash制作图章功能的话,更多功能可以挖掘出来了,可以复制的时候只复制某个色彩…或直接复制为单色图片…或…XXXX。




返回类别: Flash教程
上一教程: Flash MX 2004实例制作视频教程:时钟屏保(上)
下一教程: Flash设计制作精美的图标

您可以阅读与"Flash 8 Copy Pixels位图象素复制"相关的教程:
· flash8.0笔触颜色支持纯色,线性,放射状,位图
· loadmovie后的swf里的元件的复制问题
· AS2.0出色特效之位图的飘动
· Flash翻页最新限制授权3.0版介绍
· Flash制作折叠的三角形
    微笑服务 优质保证 索取样品