zoukankan      html  css  js  c++  java
  • 对象相交检测示例

    在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目标对象。

  • 相关阅读:
    SQL Server事务、视图和索引
    软件系统的分层开发
    OOP应用:实体类
    Oracle/MySql/SQL Sqlserver分页查询
    数据库连接语句
    SQL连接查询
    MySQL基本手册
    C# 其他
    numpy的loadtxt()用法
    Pytorch从一个输入目录中加载所有的PNG图像,并将它们存储在张量中
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/1714970.html
Copyright © 2011-2022 走看看