对象相交检测示例

在flex编程中我们有时需要判断两个对象是否相交使用obj1.hitTestObject(obj2)方法。

下面给出一个具体的示例。

 

ExpandedBlockStart.gif 代码
<? xml version="1.0" encoding="utf-8" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"    layout ="absolute"  borderColor ="#FFFFFF"   >    
    
< mx:Script >
        
<![CDATA[
            import mx.controls.*;
            import mx.core.*;

            private var lines :UIComponent =  new UIComponent ();
            private var lockX:int=0;
            private var lockY:int=0;
            private var isMove:Boolean=false;

            private function Draw():void{
                
                lines.id="line_1";
                lines.graphics.lineStyle(2,0x0099ff,1);
                lines.graphics.moveTo(100,100);
                lines.graphics.lineTo(300,300);
                stage.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent){
                    var obj:UIComponent=UIComponent(e.target);
                    if(e.target is UIComponent && obj.id=="line_1")
                    {
                        lockX=mouseX-lines.x;
                        lockY=mouseY-lines.y;
                        isMove=true;
                    }
                });
                stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
                stage.addEventListener(MouseEvent.MOUSE_UP,function (e:MouseEvent)
                {
                    isMove=false;
                });
                
                addElement(lines);
            }
                        
            private function mouseMoveHandler(event:MouseEvent):void {
                if(isMove)
                {
                    lines.x=this.mouseX-lockX;
                    lines.y=this.mouseY-lockY;
                    if(lines.hitTestObject(myCanvas))
                    {
                        lblMiddle.text="进来了";
                    }
                    else
                    {
                        if(lblMiddle.text=="进来了")
                        {
                            lblMiddle.text="出去了";    
                        }
                    }
                }
            }
        
]]>
    
</ mx:Script >
    
    
< mx:Canvas  id ="myCanvas"  x ="200"  y ="200"  width ="100"  height ="100"  alpha ="0.5"  backgroundColor ="0xff0000" ></ mx:Canvas >
    
< mx:Button  x ="20"  y ="20"  label ="画线"  click ="Draw()" />
    
< mx:Label  x ="300"  y ="300"   width ="400"  height ="200"  fontSize ="72"  color ="0xFF0000"  id ="lblMiddle" />

    
</ mx:Application >

 

 测试点与对象是否相交。

myCanvas.hitTestPoint(x,y,true)

myCanvas目标对象。

 

转载于:https://www.cnblogs.com/yg_zhang/archive/2010/04/18/1714970.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值