zoukankan      html  css  js  c++  java
  • [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/下载

  • 相关阅读:
    跑酷游戏的一些bug总结(滥用FixedUpdate的坑)
    Unity在编辑器状态下清空控制台信息
    Unity脚本在层级面板中的执行顺序测试3
    IronPython使用
    RSA加密的测试demo
    常用加密算法学习
    c#读写ini文件
    Jrebel激活方法(转)
    ThreadLocal Memory Leak in Java web application
    Java Thread Local – How to use and code sample(转)
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4544176.html
Copyright © 2011-2022 走看看