`
steely816
  • 浏览: 130074 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

AS3图像复制BitmapData.copyPixels()

阅读更多

//舞台属性设置

stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
var selectBox:Sprite = new Sprite(); //生成选择框
var recordX:Number; //记录初始x坐标
var recordY:Number; //记录初始y坐标
var endX:Number; //记录结束x坐标
var endY:Number; //记录结束y坐标
var moveX:Number; //记录移动之后x坐标
var moveY:Number; //记录移动之后y坐标
var myImage:Bitmap; //显示图片的容器
var dragFlag:Boolean= false ; //用于判断选择框是否正在拖动
var clickPoint:Point; //记录开始的选择框对应的舞台坐标点
var endPoint:Point; //记录选择框绘制结束后选择框对应的舞台坐标点
initStage();
function initStage() {
     myImage= new Bitmap();
     addChild(myImage);
     bg.addEventListener(MouseEvent.MOUSE_DOWN,startDraw); //绘制选择框
     selectBox.addEventListener(MouseEvent.MOUSE_DOWN,dragSelectBox); //拖动选择框
     selectBox.addEventListener(MouseEvent.MOUSE_UP,stopDragSelectBox); //停止拖动选择框
}
function dragSelectBox(_evt:MouseEvent): void {
     _evt.currentTarget.startDrag();
     dragFlag= true ;
}
function stopDragSelectBox(_evt:MouseEvent) {
     if (dragFlag== true ) {
         createJPG(mc_image,selectBox,Math.min(selectBox.localToGlobal(clickPoint).x,selectBox.localToGlobal(endPoint).x),Math.min(selectBox.localToGlobal(clickPoint).y,selectBox.localToGlobal(endPoint).y));
         selectBox.stopDrag();
         dragFlag = false ;
     }
}
//开始绘制
function startDraw(_evt:MouseEvent): void {
     stage.addEventListener(Event.ENTER_FRAME,drawSelectBox);
     recordX = mouseX;
     recordY = mouseY;
     clickPoint = new Point(recordX,recordY);
}
//绘制选择框
function drawSelectBox(_evt:Event): void {
     selectBox.x=selectBox.y=0; //恢复坐标到原点
     selectBox.graphics.clear();
     selectBox.graphics.lineStyle(1,0x000000);
     selectBox.graphics.beginFill(0xffffff,0.7);
     selectBox.graphics.drawRect(recordX,recordY,mouseX-recordX,mouseY-recordY);
     selectBox.graphics.endFill();
     addChild(selectBox);
     stage.addEventListener(MouseEvent.MOUSE_UP,endDraw); // 鼠标在舞台上放开时的事件
}
//绘制结束
function endDraw(_evt:MouseEvent): void {
     stage.removeEventListener(Event.ENTER_FRAME,drawSelectBox);
     selectBox.stopDrag();
     dragFlag = false ;
     endX = mouseX;
     endY = mouseY;
     endPoint = new Point(endX,endY);
     createJPG(mc_image,selectBox,Math.min(recordX,endX),Math.min(recordY,endY));
     stage.removeEventListener(MouseEvent.MOUSE_UP,endDraw); //鼠标在舞台上放开时的事件
}
function createJPG(m:MovieClip,box:Sprite,originX:Number,originY:Number) {
     removeChild(myImage);
     var jpgSource:BitmapData= new BitmapData (m.width, m.height); //先把背景图转换成BitmapData
     jpgSource.draw(m);
     var rect:Rectangle = new Rectangle(originX,originY,box.width,box.height); //设置复制的区域和大小
     var pt:Point = new Point(0, 0); //复制到的对象的起始点
     var jpgOut:BitmapData= new BitmapData(box.width, box.height);
     jpgOut.copyPixels(jpgSource, rect, pt); //复制区域内容
     myImage = new Bitmap(jpgOut);
     addChild(myImage);

在Flash上点击左键拖动可以复制选中的图片内容到左上角,这个东西的具体用处,大概就是图片信息复制吧。

分享到:
评论

相关推荐

    [转] BitmapData 基础部分2

    BitmapData是ActionScript 3(AS3)中的一个核心类,它是处理像素数据的主要工具,广泛应用于游戏开发、图像处理和动画制作等场景。在AS3中,BitmapData类允许我们创建、读取、修改和操作位图数据,这些位图数据可以...

    AS3实现对图片进行任意形状裁剪的例子

    BitmapData类是AS3中处理像素数据的主要类,它可以用于读取、写入和操作位图数据。在裁剪过程中,我们会创建一个BitmapData对象,用它来复制原始图片的像素数据。 1. **创建裁剪形状**: 首先,创建一个Shape实例...

    纯AS3 简单切图工具源码

    在AS3中,图像处理主要通过BitmapData类来完成。BitmapData类提供了对像素级别的操作,包括读取、修改和创建位图数据。在这个切图工具中,核心算法可能涉及以下步骤: 1. **加载大图**:使用Loader类加载图片文件,...

    flash-as图像合成

    本项目“flash-as图像合成”提供了一个实现这些功能的实例,包含了必要的源代码和配置文件。以下是关于这个主题的详细解释: 1. **PNGEncoder.as**: 这个文件是用于将位图对象转换为PNG格式的编码类。在AS3中,...

    [心得] draw的技巧,说说BitmapData(附源码)

    1. `copyPixels()`:从源BitmapData复制像素到目标位置,常用于图像拼接和复制。 2. `hitTest()`:检测两个BitmapData区域是否有重叠,返回一个布尔值。 3. `threshold()`:基于指定条件更改像素颜色,可用于创建...

    AS3高手之路

    ### AS3高手之路 在《AS3高手之路》这一篇深度技术文章中,作者系统地介绍了Adobe Flash平台下的ActionScript 3(AS3)编程语言的相关知识点与实践技巧。这篇文章对于希望深入掌握AS3编程的专业人士来说是一份宝贵...

    flex经典列子(实现对图片的剪切)

    Flex本身并不包含强大的图像处理功能,但可以借助第三方库如as3corelib或GreenSock的BitmapData类进行图片裁剪。BitmapData对象可以用来读取、写入和操作位图数据。 7. **实际剪切操作**: - 使用BitmapData的...

    flex 截图

    9. **第三方库**:虽然Flex本身提供了基本的截图功能,但有些情况下可能需要借助第三方库,如as3corelib,它提供了更高级的图像处理功能,包括多种图片格式的编码和解码。 10. **代码组织与设计模式**:良好的代码...

    ActionScript 3.0 开发人员指南中文官网上下的

    - **复制位图数据**:使用 `copyPixels()` 或 `mergePixels()` 可以复制或合并位图数据。 - **使用杂点功能制作纹理**:杂点(Noise)功能可用于生成随机像素,这在制作纹理效果时非常有用。 - **滚动位图**:通过...

Global site tag (gtag.js) - Google Analytics