`

[转] 判断鼠标点击图片在非透明区域

 
阅读更多
/**
                 *鼠标事件 
                 * @param evt
                 * 
                 */                
                
                private function mouseDownHandler(evt:MouseEvent):void
                {
                         if(evt.currentTarget is SceneObject)
                        {                
                                //判断当前点击区是否在最小图形范围内
                                
                                var bmd:BitmapData = new BitmapData(evt.currentTarget.width,evt.currentTarget.height,true, 0x00000000);
                                bmd.draw(evt.currentTarget as SceneObject);
                                                                 
                                                                //第一种方法:找到对象的非空白区域,判断鼠标点击点是否在该区域内

                                ///看帮助 若要确定图像周围的空白区域,请传递 {mask: 0xFFFFFFFF, color: 0xFFFFFFFF} 以查找非空白像素的范围。如果new BitmapData时填充了 0x00000000则传递{mask: 0xFFFFFFFF, color: 0x00000000}
                                /*var rect:Rectangle = bmd.getColorBoundsRect(0xffffffff,0x00000000,false);        
                                trace(rect);
                                var minx:Number =  rect.x;
                                var miny:Number =  rect.y;
                                var maxx:Number = minx + rect.width;
                                var maxy:Number = miny + rect.height;
                                */

                                                                //第二种方法 取当前点击点的颜色值 与0x0000000进行判断如果相等则非空白 ,
                                /*var color:uint = bmd.getPixel32(evt.localX,evt.localY);
                                trace(color.toString(16),0x00000000); //此处 的color值在点击透明区域输出0xffffffff
                                */

                                                                 //第三种方法 利用像素碰撞函数hitTest一步解决 0x00000001 为取比0x00000000都大的区域都为非透明像素
                                var ptoint = new Point(evt.localX,evt.localY); 
                                if(bmd.hitTest(new Point(0,0),0x00000001,pt))
                                //if(evt.localX>= minx  && evt.localX <= maxx && evt.localY  >= miny  && evt.localY <= maxy)
                                //if(color != 0x00000000)
                                {
                                        trace("按下,在内部");
                                                                                bmd.dispose();
                                }
                                else
                                {
                                        trace("按下,不在内部");
                                        bmd.dispose();
                                        return;//返回不停止事件流,让鼠标托动背景 
                                }                        }
                        evt.stopPropagation();
                }

分享到:
评论

相关推荐

    js图片区域点击,适用于移动端

    为了实现区域点击功能,我们可以在图片上添加额外的HTML元素,如`&lt;div&gt;`,这些元素将覆盖在图片之上,并设置相应的透明度,使得用户仍能看到图片。然后,我们为这些元素绑定点击事件,当用户点击这些区域时,触发...

    Unity 判断鼠标悬浮在UI或3D物体上触发各种效果Demo

    这个“Unity 判断鼠标悬浮在UI或3D物体上触发各种效果Demo”着重展示了如何实现这一功能,使得用户可以通过鼠标操作与场景中的3D物体和UI元素进行互动。 首先,我们来探讨如何判断鼠标是否悬浮在3D物体上。在Unity...

    as3.0加载透明图片

    AS3中,即使图片具有透明部分,鼠标事件仍会在整个图片区域上响应。如果希望透明部分不响应鼠标事件,需要进行额外的处理。一种方法是在鼠标事件触发时,检查鼠标点击位置的像素是否透明。如果透明,则不执行原有的...

    限制鼠标活动区域

    3. 在窗口的消息处理函数中,解析WM_MOUSEMOVE、WM_LBUTTONDOWN等鼠标消息,判断鼠标是否在活动区域内。如果在区域内,则执行相应的操作;否则,忽略这些事件。 4. 当需要解除限制时,调用ReleaseCapture函数释放...

    鼠标移动到地图的热点区域时突出显示热点区域的源码

    `isInsideRectangle`是一个辅助函数,用于判断鼠标位置是否在指定矩形内;`highlightHotspot`和`showTooltip`分别用于突出显示热点和显示提示信息;`removeHighlight`和`hideTooltip`则用于取消高亮和隐藏提示。 ...

    Delphi中多个图像相互覆盖时实现无内容处点击穿透

    正常情况下,用户点击被遮挡的B控件部分,系统会认为用户是在点击A控件。但是,我们可以通过自定义控件的行为来改变这一点。 要实现这种无内容处点击穿透的效果,我们可以利用Delphi中的`CMHitTest`消息。`...

    用c#做的截屏程序(用鼠标选择所要截取的区域)和QQ截屏基本相同,但可以保存成BMP,GIF,JPG的多种格式

    在描述中提到的“用鼠标选择所要截取的区域”功能,是通过捕获鼠标的移动和点击事件来实现的。在C#中,我们可以利用Windows API函数,如GetCursorPos和SetCapture,获取鼠标当前位置,并在用户按下鼠标后开始记录...

    vc透明边框可以放控件

    如果要使用非模式对话框并保持良好的用户体验,可能需要额外的逻辑来处理鼠标和键盘事件,确保透明区域不会误接收输入。 在实际应用中,为了实现透明边框的对话框,我们需要创建自定义控件并覆盖其`OnPaint()`函数...

    C#半透明控件

    此外,`HitTest`方法用于判断鼠标点击是否在控件的形状内,这对于交互式控件尤其重要。 6. **性能考虑**:自定义绘图和半透明处理可能会对性能产生影响,特别是在高分辨率或大量控件的情况下。因此,优化代码,如...

    C#鼠标穿透功能工程

    总结来说,"C#鼠标穿透功能工程"是关于在C#环境下,利用Windows Forms或WPF平台的特性,通过自定义控件、事件处理和透明度控制,实现鼠标点击能够穿透特定控件并作用于其下的元素。这个项目对于开发者来说,可以作为...

    VC++做异形窗口 透明效果

    //下面的两层循环为检查背景位图象素颜色,进行透明区域处理;//当象素颜色为指定的透明值时,即将该点从区域中剪裁掉。//其中用到的几个成员变量m_MaskLeftOff、m_MaskTopOff、//m_MaskRightOff、m_MaskBottomOff、...

    SuperMap iClient for 3D透明面板

    4. **坐标转换**:获得的屏幕坐标需要转换为地图坐标,以便我们能判断鼠标是否在特定区域上,例如地图的特定图层或对象。 5. **执行相应功能**:根据鼠标的位置,我们可以调用不同的函数来执行相应的操作。比如,...

    C#透明可旋转可变刻度三角板源码

    在本文中,我们将深入探讨基于C#开发的“透明可旋转可变刻度三角板”源码项目。这个项目利用了GDI+图形设备接口,实现了动态交互的几何工具,可以用于教学、设计或编程练习等多种场景。让我们逐一分析这个项目的关键...

    jQuery鼠标感知方向插件悬停图片遮罩动画特效源码.zip

    在这个插件中,jQuery被用来监听鼠标的移动事件,实时判断鼠标相对于图片的位置,从而实现动态遮罩效果。 1. **鼠标感知方向**:这个插件的核心功能在于能够识别鼠标移动的方向。当鼠标进入图片区域,插件会跟踪...

    Silverlight1.0实例-〖鼠标点击游戏Sprawl〗

    游戏地图通常由多个可点击的区域组成,这些区域可以通过绘制形状(如Path或Rectangle)并在它们上绑定事件处理程序来实现。此外,为了跟踪每个玩家的领地,游戏可能使用二维数组或者图形对象树来存储地图状态。 ...

    C# 拖拽拉伸图片裁剪选框

    同时,需要判断鼠标是否在Panel的边框上,以决定是否允许拉伸。 对于拉伸功能,我们可以在Panel的四个角上添加小的控件(如Button)作为拉伸手柄。当鼠标位于这些手柄上时,监听MouseDown和MouseMove事件,根据鼠标...

    易语言窗口客户区透明

    4. **判断客户区**:在处理鼠标事件或绘图时,可能需要判断鼠标是否在透明区域内,这可以通过比较鼠标位置与客户区或透明区域的位置来实现。 5. **设置窗口**:最后,调用`SetLayeredWindowAttributes`函数设置窗口...

    MFC半透明处理

    为此,你需要在消息映射中处理WM_LBUTTONDOWN等消息,并判断点击位置是否在透明区域内。 5. **更新显示**:当窗口或控件的内容发生变化时,需要重新绘制并更新显示。可以使用`InvalidateRect`函数标记需要重绘的...

    HTML5 Canvas实现的鼠标点击长按粒子动画特效源码.zip

    6. **颜色变化**:为了增加视觉效果,粒子的颜色可能在动画过程中发生变化,这可以通过设置粒子颜色的透明度(alpha值)或随机颜色来实现。 7. **用户交互**:长按时可能触发更多的粒子发射,或者改变粒子的运动...

    仿QQ屏幕右上角鼠标移动显示离开隐藏效果

    在鼠标进入边界区域后启动定时器,然后在定时器的Tick事件中逐步调整控件的透明度和大小,从而实现淡入淡出效果。离开边界时,同样可以通过定时器逐渐恢复到隐藏状态。 此外,为了确保用户体验,需要考虑一些额外...

Global site tag (gtag.js) - Google Analytics