• [ActionScript 3.0] 利用InteractivePNG.as类精确选择识别png图片有像素的区域


    用法:如果是把png直接导入flash转换成影片剪辑,只需在影片剪辑属性中勾选为ActionScript导出(x),并把基类里的flash.display.MovieClip替换成InteractivePNG即可;如果是外部导入png,只需将存放png的类继承InteractivePNG即可;

     1 package 
     2 {
     3     import flash.display.Loader;
     4     import flash.display.MovieClip;
     5     import flash.display.Shape;
     6     import flash.display.Sprite;
     7     import flash.events.Event;
     8     import flash.events.MouseEvent;
     9     import flash.filters.DropShadowFilter;
    10     import flash.net.URLRequest;
    11 
    12     /**
    13       * ...
    14       * @author Frost.Yen
    15       */
    16     public class TestPNG extends Sprite
    17     {
    18         private var pngSp:PNGContainer;
    19         private var ldr:Loader = new Loader  ;
    20         private var lineSp:Sprite;
    21         private var frame:Shape = new Shape  ;
    22         public function TestPNG()
    23         {
    24 
    25             lineSp = new Sprite  ;
    26             pngSp = new PNGContainer  ;
    27             pngSp.x = pngSp.y = 200;
    28             this.addChild(lineSp);
    29             this.addChild(pngSp);
    30             pngSp.addEventListener(MouseEvent.MOUSE_OVER,onPNGOver);
    31             pngSp.addEventListener(MouseEvent.MOUSE_OUT,onPNGOut);
    32         }
    33 
    34         private function onPNGOver(e:MouseEvent):void
    35         {
    36             drawLine(pngSp);
    37         }
    38 
    39         private function onPNGOut(e:MouseEvent):void
    40         {
    41             this.removeChild(frame);
    42         }
    43 
    44         private function drawLine(_mc:MovieClip)
    45         {
    46             frame.graphics.clear();
    47             frame.graphics.moveTo(_mc.x,_mc.y);
    48             frame.graphics.lineStyle(1,0xff00ff);
    49             frame.graphics.lineTo(_mc.x + _mc.width,_mc.y);
    50             frame.graphics.moveTo(_mc.x + _mc.width,_mc.y);
    51             frame.graphics.lineTo(_mc.x + _mc.width,_mc.y + _mc.height);
    52             frame.graphics.moveTo(_mc.x + _mc.width,_mc.y + _mc.height);
    53             frame.graphics.lineTo(_mc.x,_mc.y + _mc.height);
    54             frame.graphics.moveTo(_mc.x,_mc.y + _mc.height);
    55             frame.graphics.lineTo(_mc.x,_mc.y);
    56             addChild(frame);
    57         }
    58     }
    59 }
     1 package 
     2 {
     3     import flash.display.Loader;
     4     import flash.events.Event;
     5     import flash.net.URLRequest;
     6 
     7     /**
     8       * ...
     9       * @author Frost.Yen
    10       */
    11     public class PNGContainer extends InteractivePNG
    12     {
    13         private var ldr:Loader = new Loader  ;
    14         public function PNGContainer()
    15         {
    16             ldr.load(new URLRequest("128.png"));
    17             ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onPNGLoaded);
    18         }
    19 
    20         private function onPNGLoaded(e:Event):void
    21         {
    22             this.addChild(e.target.content);
    23         }
    24     }
    25 
    26 }

    InteractivePNG.as类可以到http://yan_frost.download.csdn.net/下载

  • 相关阅读:
    asp.net中控件的enableviewstate属性 的设置
    一个怎样得到treeView值的小例子
    实现表格边框的样式表
    GridView的精妙使用
    无法向会话状态服务器发出会话状态请求。
    Microsoft Visual Studio 2008 快捷键大全
    我每天学习一句英语今天要学的是
    C语言学习心得
    怎么样把GridView里的数据导出到Excel里
    怎么样在c#程序中放音乐
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4544176.html
Copyright © 2020-2023  润新知