`
luosijin123
  • 浏览: 12163 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

《Making Things Move》hitTestObject碰撞检测

阅读更多

该实例来源于《Making Things Move》一书,对于对象碰撞检测hitTestObject方法使用简单,不过对于不规则形状就显示“错误的碰撞“,所以对于矩形来说,hitTestObject检测碰撞的结果很好,(让我联想到俄罗斯方块的设计了),另外,你也可以尝试绘制出你喜欢的图形来看看效果!

代码如下:

NewGraphic.as

package org.luosijin.hit   
{   
    import flash.display.Sprite;   
       
    public class NewGraphic extends Sprite   
    {   
        private var _w:Number;  //定义矩形宽度   
        private var _h:Number;  //定义矩形高度    
        private var _unit:uint  //定义矩形颜色   
           
        public var vx:Number=0; //定义矩形X轴速度   
        public var vy:Number=0; //定义矩形Y轴速度   
  
        public function NewGraphic(width:Number=50,height:Number=50,color:uint=0xff0000)   
        {   
            this._w = width;   
            this._h = height;   
            this._unit = color;   
            init();   
        }   
        public function init():void  
        {   
            graphics.beginFill(_unit);    
            graphics.drawRect(_w/2,_h/2,_w,_h);   
            graphics.endFill();   
        }   
    }   
}  
package org.luosijin.hit
{
 import flash.display.Sprite;
 
 public class NewGraphic extends Sprite
 {
  private var _w:Number; //定义矩形宽度
  private var _h:Number; //定义矩形高度 
  private var _unit:uint //定义矩形颜色
  
  public var vx:Number=0; //定义矩形X轴速度
  public var vy:Number=0; //定义矩形Y轴速度

  public function NewGraphic(width:Number=50,height:Number=50,color:uint=0xff0000)
  {
   this._w = width;
   this._h = height;
   this._unit = color;
   init();
  }
  public function init():void
  {
   graphics.beginFill(_unit); 
   graphics.drawRect(_w/2,_h/2,_w,_h);
   graphics.endFill();
  }
 }
}

 
Graphics.as

package org.luosijin.hit   
{   
    import flash.display.Sprite;   
    import flash.events.Event;   
    import flash.utils.Timer;   
       
    public class Graphics extends Sprite   
    {   
        private var _graphic:NewGraphic;   
        private var _graphices:Array;   
        private var _gravity:Number = 0.3;   
        public function Graphics():void  
        {   
            init();   
        }   
        private function init():void  
        {   
            _graphices = new Array();   
            createGraphic();   
            addEventListener(Event.ENTER_FRAME,onEnterFrame);   
        }   
           
        private function createGraphic():void  
        {   
            if(_graphices.length>80)   
            {   
                removeEventListener(Event.ENTER_FRAME,onEnterFrame);   
            }   
            //随机初始化宽高与颜色    
            _graphic = new NewGraphic(Math.random()*40+10,Math.random()*40+10,Math.random()*0XFFFFFF);   
            _graphic.x = Math.random()*stage.stageWidth;    //随机初始化图形的x位置   
            addChild(_graphic);   
            _graphices.push(_graphic);   
        }   
        private function onEnterFrame(event:Event):void  
        {   
            //重力加速放到图形的y轴上    
            _graphic.vy += _gravity;   
            _graphic.y += _graphic.vy;   
            //判断是否到达屏幕底部   
            if(_graphic.y+_graphic.height/2>stage.stageHeight)   
            {   
                _graphic.y = stage.stageHeight-_graphic.height/2;   
                createGraphic();   
            }   
            //循环判断是否碰撞到其中一个图形   
            for(var i:int=0;i<_graphices.length;i++)   
            {   
                if(_graphic!=_graphices[i]&&_graphic.hitTestObject(_graphices[i]))//确定图形是否与 显示图形的边框重叠或相交。      
                {   
                        _graphic.y = _graphices[i].y-_graphices[i].height/2-_graphic.height/2;   
                        createGraphic();   
                }   
            }   
  
        }   
    }   
}  
分享到:
评论

相关推荐

    [Flash.ActionScript.3.0动画教程

    [Flash.ActionScript.3.0动画教程],这是一本由Keith Peters编写的一本动画设计教材,此书要求读者对as2.0要有比较深的了解,主要讲解的是动画相关的原理。绝对有价值的一本书。...Making Things Move! 结束语

    不规则碰撞

    在网上看了下flash的各种碰撞,如果你对碰撞要求不高或者是规则元件的碰撞,使用API mc.hitTestObject(mc2),mc.hitTestPoint()像素碰撞。如果不是规则元件与元件之间的碰撞可使用:位图像素碰撞BitmapData.hitTest...

    可爱战机.fal

    private var backSound:Sound = new Back_Sound ; //实例化声音开关对象 private var sound_MC:Sound_MC=new Sound_MC(); //创建一个标识变量,该变量用于标记背景音乐是否在播放,初始状态为播放 ...

    2层设计-2.4G RF高频信号收发模块硬件(cadence原理图+PADS PCB图+BOM)文件.zip

    2层设计-2.4G RF高频信号收发模块硬件(cadence原理图+PADS PCB图+BOM)文件,可供学习及设计参考。

    JAVA文件传输(lw+源代码).zip

    FTP(File Transfer Protocol)是文件传输协议的简称。 FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 目前FTP服务器软件都为国外作品,例如Server_U、IIS,国内成熟的FTP服务器软件很少,有一些如(Crob FTP Server),但从功能上看来远不能和那些流行的服务器软件媲美。

    语音端点检测及其在Matlab中的实现.zip

    语音端点检测及其在Matlab中的实现.zip

    Matlab 交互式多模型目标跟踪IMM.zip

    Matlab 交互式多模型目标跟踪IMM.zip

    numpy试题(2021年整理精品文档).zip

    numpynumpy试题(2021年整理精品文档).zip

    基于Python+Django城市PM2.5空气质量数据可视化分析系统

    【作品名称】:基于Python+Django城市PM2.5空气质量数据可视化分析系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: Python基于Django城市PM2.5空气质量数据可视化分析 开发软件:Pycharm + Python3.7 + Django + Echarts + Mysql 实现目标:利用已经收集各个城市包括北京、上海、广州、成都、沈阳的PM2.5空气数据,利用python进行各种数据分析,将分析结果保存到csv文件中,然后利用django框架的网站,前端采用echart对分析的结果进行图表可视化展示。

    c#实现求解白拉修斯方程。程序使用文件流,四阶龙哥库塔法.zip

    c#实现求解白拉修斯方程。程序使用文件流,四阶龙哥库塔法

    单片机3.DSN

    单片机3.DSN

    NumPy 的用途是什么

    NumPy 的用途是什么

    Java游戏设计打飞机程序(源代码+LW).zip

    Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)

    Java项目之企业人事工资管理系统(源码)

    Java项目之企业人事工资管理系统(源码) 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9

    vb.net做的教务管理系统 功能完善 后台数据库使用的acce.zip

    vb.net做的教务管理系统 功能完善 后台数据库使用的acce.zip

    Nvidia 17.1 for win10&Win11 vGPU驱动

    Nvidia 17.1最新win10&Win11 vGPU驱动 名称:551.78_grid_win10_win11_server2022_dch_64bit_internationa

    基于物品的协同过滤推荐调用实例(C#版).zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

    (文章复现)工业园区需求响应资源聚合优化配置方法matlab代码

    参考文献: [1]李明轩,齐步洋,贺大玮.工业园区需求响应资源聚合优化配置方法[J].电网技术,2022,46(09):3543-3549.DOI:10.13335/j.1000-3673.pst.2021.1666. 1.摘要 需求响应资源数量的不断提升对响应资源的优化运行方法提出了更高的要求。面向工业园区内负荷聚合商开展日内需求响应的应用场景,提出了一种资源聚合优化配置方法,即在日前时段对响应资源预先聚合优化形成一定数量满足 特定条件的聚合体,再在日内运行时段对各聚合体进行优化调用以满足电网侧需求。该方法实现对数量庞大、分散存在、特性各异的资源的灵活聚合和优化配置,充分发挥各资源响应潜力和互补特性,并通过将大量求解计算从日内转移至日前时段,平衡了响应实时性要求与计算规模的矛盾。通过算例分析验证了所提模型与方法的合理性和有效性。

    毕业设计[主机域名]HostDirector v1.01_hostdirector101.zip

    毕业设计[主机域名]HostDirector v1.01_hostdirector101.zip

Global site tag (gtag.js) - Google Analytics