收藏本站 | 广告设计 | 设计素材 | 教程 | ppt素材 | 中职 | 范文 | 常识 | 学习方法 | 作文  
订阅
首页
高考试题中考试卷学习方法范文写作作文大全公务员考试英语考试中职教育生活常识评语大全
热门: 广告设计 设计素材 教程 ppt素材 自考试卷 计算机等级考试 财会类考试 建筑工程考试 医药类考试 考研 电脑学习 驾照考试 语录名言好词 周公解梦 偏方
当前位置:一路求学网文章频道平面设计教程Flash教程加载PNG后其透明区域不响应事件

加载PNG后其透明区域不响应事件

一路求学网 http://www.16qiuxue.com  阅览次数: 943次 08-24 17:03:27 

标签:flash教程制作,flash动画教程,flash教程下载,http://www.16qiuxue.com 加载PNG后其透明区域不响应事件,

Webjx核心提示:有时候我们希望加载PNG后其透明区域不响应事件.

有时候我们希望加载PNG后其透明区域不响应事件..

网上的一般的方法为~
先获取其bitmapData对象..

当进行点击操作时使用..
bitmapData.getPixel32(x,y)获取..
点击位置的是否透明..
然后再操作...

而mosueOver与mouseOut等事件稍为复杂点..
需要侦听mouseMove..
然后对经过的坐标进行透明判断~~再抛出相应的事件...

今天介绍的方法原理跟上面差不多..
不过我们使用Sprite的另一个属性hitArea..(关于hitArea的说明请查看这里)
在图像加载完毕后..
先绘制一个去除了透明部份的Sprite..
然后把该Sprite指定为源对象的hitArea..

先看看效果: 

代码也很简单:main.mxml   01.<?xml version="1.0" encoding="utf-8"?> 02.<mx:Application xmlns:mx="http://www.adobe.com/2009/mxml" layout="absolute" xmlns:local="*"> 03.    <mx:Script> 04.        <![CDATA[ 05.            import mx.managers.CursorManager; 06.            private function abc(e:MouseEvent):void 07.            { 08.                if(e.type == "mouseOver") 09.                { 10.                    CursorManager.setBusyCursor(); 11.                }else 12.                { 13.                    CursorManager.removeBusyCursor(); 14.                } 15.            } 16.        ]]> 17.    </mx:Script> 18.    <local:MyImage source="/UploadTeach/200908/20090811213244572.jpg" mouseOver="abc(event)" mouseOut="abc(event)"  y="25"/> 19.    <mx:Image source="/UploadTeach/200908/20090811213244572.jpg" mouseOver="abc(event)" mouseOut="abc(event)"  x="344" y="25"/> 20.</mx:Application>
MyImage.as,自定义Image类..   01.package 02.{ 03.    import flash.display.BitmapData; 04.    import flash.display.DisplayObject; 05.    import flash.display.Sprite; 06.    import flash.events.Event; 07.    import flash.geom.Matrix; 08.    import flash.utils.setTimeout; 09.       10.    import mx.controls.Image; 11.    /** 12.     * 自定义Image类,使之忽略PNG透明区域  13.     * @author L4cd.Net 14.     */   15.    public class MyImage extends Image 16.    { 17.        private var ht:Sprite = new Sprite(); 18.        public function MyImage() 19.        { 20.            addChild(ht); 21.            hitArea = ht; 22.            //指定hitArea为ht对象 23.            ht.visible = false; 24.            ht.mouseEnabled = false; 25.            mouseChildren = false; 26.            addEventListener(Event.COMPLETE,complete,false,99,true); 27.            setTimeout(update,50) 28.        } 29.        private function complete(e:Event):void 30.        { 31.            setTimeout(update,50) 32.        } 33.        private function update():void 34.        { 35.            if(!content)return; 36.            var loader:DisplayObject = content.parent as DisplayObject; 37.            var bit:BitmapData = new BitmapData(loader.width,loader.height,true,0x00000000); 38.            var mat:Matrix = new Matrix(); 39.            mat.scale(loader.scaleX,loader.scaleY); 40.            bit.draw(loader,mat); 41.            //重绘图象到bit 42.            ht.graphics.clear(); 43.            ht.graphics.beginFill(0); 44.            for(var x:uint=0;x<bit.width;x++) 45.            { 46.                for(var y:uint=0;y<bit.height;y++) 47.                { 48.                    if(bit.getPixel32(x,y))ht.graphics.drawRect(x,y,1,1); 49.                } 50.            } 51.            //以graphics画出bit的无透明区域 52.            ht.graphics.endFill(); 53.        } 54.    } 55.},加载PNG后其透明区域不响应事件
《加载PNG后其透明区域不响应事件》相关文章

网友评论>>

联系我们 | 网站地图 | 广告设计 | 设计素材 | 教程大全 | ppt素材 | 中职教育 | 范文大全 | 常识大全 | 学习方法 | 作文大全
一路求学网 版权所有. Copyright © - http://www.16qiuxue.com. All rights reserved.
学习方法_小学英语作文_驾照考试试题_幼儿园大班评语
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18