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

本文介绍如何在Flash中使用PNG图片创建交互式效果。通过自定义类PNGContainer继承InteractivePNG,并结合事件监听实现鼠标悬停时绘制边框的功能。示例代码展示了如何加载外部PNG文件并响应鼠标事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用法:如果是把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.youkuaiyun.com/下载

转载于:https://www.cnblogs.com/frost-yen/p/4544176.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值