`
hgfghww6
  • 浏览: 42119 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

BitmapData抠图小实验

阅读更多

先看看效果:
 
代码如下:
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.geom.*;
import flash.filters.*;
/**
  * @author CYPL
  * 设置图片元件实例名为Image
  */
public class CutImageTest extends Sprite {
  private var _imageBitmapData : BitmapData;
  private var _imageHotAreaData:BitmapData;
  private var _imageBitmap : Bitmap;
  private var _mouseRectContainer:Sprite;
  private var _mouseRectStartX:Number;
  private var _mouseRectStartY:Number;
  private var _imageClipDraging:Boolean;
  private var _currentDragClip:Sprite;
  public function CutImageTest() {
   
   _mouseRectContainer=new Sprite;
   Image.visible=false;
   _imageBitmapData=new BitmapData(Image.width,Image.height,true,0),_imageBitmapData.draw(Image);
   _imageBitmap=Bitmap(addChild(new Bitmap(_imageBitmapData)))
   _imageBitmap.x=30
   _imageBitmap.y=30
   configMouseEvent();
   //----------hitTestArea------------------------
   var c:ColorTransform=new ColorTransform;
   c.color=0xff0000;
   _imageHotAreaData=_imageBitmapData.clone();
   _imageHotAreaData.draw(_imageHotAreaData,null,c);
  }
  private function configMouseEvent():void {
   stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler,false,0,true);
   stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler,false,0,true);
  }
  /**************************drawRect handler*******************************/
  private function mouseDownHandler(evt:MouseEvent):void {//mouse_down
   if (_imageClipDraging) {
    return;
   }
   addChild(_mouseRectContainer);
   _mouseRectStartX=evt.stageX;
   _mouseRectStartY=evt.stageY;
   stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
  }
  private function mouseUpHandler(evt:MouseEvent):void {//mouse_up
   
   //_currentDragClip&&();
   _imageClipDraging&&(_currentDragClip.stopDrag(),_imageClipDraging=false,_currentDragClip.alpha=1)||(cutImage(checkIntersection()),_mouseRectContainer.graphics.clear(),stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler))
   
  }
  private function mouseMoveHandler(evt:MouseEvent):void {//mouse_move
   evt.updateAfterEvent();
   var minX:Number=Math.min(evt.stageX,_mouseRectStartX)
   var minY:Number=Math.min(evt.stageY,_mouseRectStartY)
   var maxX:Number=Math.max(evt.stageX,_mouseRectStartX)
   var maxY:Number=Math.max(evt.stageY,_mouseRectStartY)
with(_mouseRectContainer.graphics){
   clear();
   lineStyle(0);
   beginFill(0xffff00,.5);
   drawRect(0,0,maxX-minX,maxY-minY);}
   _mouseRectContainer.x=minX;
   _mouseRectContainer.y=minY;
  }
  /************************************************************************/
  /**************************drag  handler*******************************/
  private function clipMouseDownHandler(evt:MouseEvent):void {//mouse_down
   var target:Sprite=evt.target as Sprite;
   _currentDragClip=target;
   _currentDragClip.alpha=.5;
   _imageClipDraging=true;
   addChild(target);
   _currentDragClip.startDrag(false);
  }
  /************************************************************************/
  private function checkIntersection():Rectangle {
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/3009.html
分享到:
评论

相关推荐

    BitmapData.draw方法

    BitmapData.draw方法是ActionScript 3.0中的一个重要功能,主要用在Adobe Flash环境中处理位图数据。这个方法允许开发者将一个显示对象(如Sprite、MovieClip或Bitmap)的可视内容复制到BitmapData对象上,从而实现...

    ActionScript 3 BitmapData 的例子

    bitmapData.applyFilter(bitmapData, new Rectangle(0, 0, bitmapData.width, bitmapData.height), new Point(), filter); ``` 6. 图像合并与混合模式 利用`merge()`方法,可以将两个BitmapData对象合并,同时可以...

    [转] BitmapData 基础部分2

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

    使用C#的BitmapData

    在C#中,`BitmapData`类是用于高效地访问和操作位图图像像素的核心类。这个类在处理大量像素操作时尤其有用,因为它允许直接访问图像数据的内存缓冲区,而无需通过昂贵的属性访问。`BitmapData`提供了一种优化的方法...

    BitmapData.zip

    BitmapData.zip 文件是一个包含 Delphi 开发中使用的 BitmapData 单元的压缩包。这个单元主要是为了实现图像处理和颜色查找功能,对于 Delphi 开发者来说,它提供了一个高效且方便的工具来搜索和操作图像数据。让...

    BitmapData.pas和kbKernel.pas

    2. **模板匹配**:使用一个已知的小图像(模板)在大图中搜索匹配的位置,常用于识别特定图案。 3. **霍夫变换**:对于线条或边缘检测,可以使用霍夫变换找到图像中的直线或曲线。 接下来,kbKernel.pas 文件则可能...

    delphi 找图找色 BitmapData.pas

    delphi 找图找色 BitmapData.pas 使用方法请到原作者yeye55的blog查看, http://yeye55blog.blog.163.com/blog/static/19724102120111043252016/

    BitmapData_for_EaselJS:用于EaselJS的BitmapData将AS3(例如BitmapData)添加到EaselJS

    EaselJS的位图数据EaselJS的BitmapData将AS3(例如BitmapData)添加到EaselJS。例1 // create BitmapData by HTMLImageElement_bmd01 = new createjs.BitmapData(HTMLImageElement);_bitmap01 = new createjs.Bitmap...

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

    BitmapData是ActionScript 3(AS3)中的一个核心类,它是Adobe Flash Professional和Flex开发中的重要组成部分。这篇心得分享了关于使用BitmapData的一些高级技巧,以及如何利用它来提升图形绘制的效率和效果。...

    as2.0amlabfire.zip_BitmapData_True Blue

    as2.0 模拟火焰 import flash.display.*...var blueSpot: BitmapData = new BitmapData( clipBounds.xMax, clipBounds.yMax, true, 0 ) blueSpot.draw( blueSpotClip, new Matrix() ) blueSpotClip.removeMovieClip()

    Flex RIA AS3网页游戏 BitmapData CopyPixel用法.rar

    这个压缩包"Flex RIA AS3网页游戏 BitmapData CopyPixel用法.rar"显然包含了关于如何在AS3中使用BitmapData的CopyPixel方法来创建或修改位图的示例和教程。 BitmapData对象是AS3中表示位图图像的数据结构,它可以...

    SWT中的bitmapdata,和自己封装的image工具类

    BitmapData是SWT库中一个关键的类,它用于处理位图数据,允许开发者直接操作图像的像素。在这个主题中,我们将深入探讨BitmapData以及如何与自定义的Image工具类配合使用。 BitmapData类提供了对图像数据的低级别...

    王者找图对比程序.rar_BitmapData.pas_delphi 找图_对比找图_王找找图_王者找图对比程序

    王者找图对比程序,delphi制作,设定一个图,找另一个图上是否有这个图!

    位图噪声效果BitmapData类的运用

    BitmapData类实例 运用噪声制作一些好的效果 源码

    flash实验指导

    【Flash实验指导】这篇实验指导主要涵盖了Flash中关于图片、SWF文件的加载,以及相关的类和属性的使用。实验旨在帮助学习者掌握以下几个关键知识点: 1. **图片和SWF文件的加载**: - 加载过程通常分为4步: a. ...

    flex 两个图片播放小程序

    综上所述,"flex 两个图片播放小程序"利用了Flex的BitmapData、Image组件、事件处理和动画机制,创建了一个能够实现图片浏览、放大和缩小功能的应用。这样的小程序在用户体验、图像处理和性能优化方面都有一定的技术...

    位图工具BitmapDataUtil类-getRealImageRect方法演示

    NULL 博文链接:https://kinglong.iteye.com/blog/1609379

    typescript-definition-bitmapdata-for-easeljs:CreateJS 的 BitmapData 的 TypeScript 定义

    CreateJS 的 BitmapData 的 TypeScript 定义。 这是一个定义文件,用于将 BitmapData 类用于 CreateJS 和 TypeScript。 如何使用 是定义文件体。 请从 TypeScript 程序中读取并使用它。 请注意,单独使用此文件是...

    Flash as3基于位图的碰撞检测实例

    var bitmapData:BitmapData = new BitmapData(displayObject.width, displayObject.height, false, 0); bitmapData.draw(displayObject); ``` 2. **位图数据比较**:有了BitmapData对象后,我们可以使用`hitTest()`...

    AdjustDisplayObject 之 Mosaic

    在实现Mosaic特效时,我们通常会先创建一个原始BitmapData对象,然后创建一个较小的BitmapData对象,用于存储经过马赛克处理后的像素块。接下来,我们会遍历原始BitmapData中的每一个像素,将其映射到小块BitmapData...

Global site tag (gtag.js) - Google Analytics