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

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

 

代码
<?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目标对象。

 

posted on 2010-04-18 21:50  自由港  阅读(223)  评论(0编辑  收藏  举报