• 【AS3代码】精确到点的不规则图形碰撞检测


    package
    {
        import com.ui.Star;
        
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
        import flash.events.MouseEvent;
        import flash.filters.GlowFilter;
        import flash.geom.Matrix;
        import flash.geom.Point;
        
        public class Main extends Sprite
        {
            private var bmpd1:BitmapData;
            private var bmp1:Bitmap;
            private var bmpd2:BitmapData;
            private var bmp2:Bitmap;
            
            public function Main():void
            {            
                init();
            }
            private function init():void
            {
                stage.align = StageAlign.TOP_LEFT;
                stage.scaleMode = StageScaleMode.NO_SCALE;
                
                var star:Star = new Star(50);
                
                bmpd1 = new BitmapData(100,100,true,0);
                bmpd1.draw(star, new Matrix(1,0,0,1,50,50));
                bmp1 = new Bitmap(bmpd1);
                bmp1.x = 200;
                bmp1.y = 200;
                this.addChild(bmp1);
                
                bmpd2 = new BitmapData(100,100,true,0);
                bmpd2.draw(star, new Matrix(1,0,0,1,50,50));
                bmp2 = new Bitmap(bmpd2);
                this.addChild(bmp2);
                
                stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoving);
            }
            private function onMouseMoving(event:MouseEvent):void
            {
                bmp2.x = mouseX - 50;
                bmp2.y = mouseY - 50;
                
                if(bmpd1.hitTest(new Point(bmp1.x, bmp1.y), 255, bmpd2, new Point(bmp2.x, bmp2.y), 255))
                {
                    bmp1.filters = [new GlowFilter()];
                    bmp2.filters = [new GlowFilter()];
                }
                else
                {
                    bmp1.filters = [];
                    bmp2.filters = [];
                }
            }
        }
    }
  • 相关阅读:
    (转) Nova是如何统计OpenStack资源
    (转) 一次批量重启引发的Neutron网络故障
    (转)理解Keystone的四种Token
    neutron 虚拟机网络问题调试
    转 Nova: 虚机的块设备总结 [Nova Instance Block Device]
    kvm 客户机系统的代码是如何运行的
    12 while循环
    11猜拳游戏
    10 if 嵌套
    09 if...elif..else语句
  • 原文地址:https://www.cnblogs.com/kingfly/p/2606157.html
Copyright © 2020-2023  润新知