zoukankan      html  css  js  c++  java
  • 碰撞检测(小球与舞台以及挡板碰撞的判断)

    package view
    {
    /**
     * @author zoe
     *
     */
    import flash.display.Sprite;
    import flash.events.Event;
    
    public class GameScene extends Sprite
    {
        private var rect:MoveRect;
        private var ball:Ball;
        
        private var speedX:int;
        private var speedY:int;
        private var r:int;
        public function GameScene()
        {
            init();
        }
        
        private function init():void
        {
            rect = new MoveRect();
            ball = new Ball();
            addChild(rect);
            addChild(ball)
            
            rect.y = 560;
            ball.x = 300;
            ball.y = 300;
            
            speedX = 5;
            speedY = 5;
            r = ball.width/2;    
            
        }
        
        public function useEfHandler():void
        {
            addEventListener(Event.ENTER_FRAME,efHandler);
        }
        
        private function efHandler(event:Event):void
        {
            rect.x = mouseX - rect.width/2;        
            
            ball.x += speedX;
            ball.y += speedY;
            
            if(ball.x < r)
            {
                speedX = -speedX;
            }
            
            if(ball.x >= this.stage.stageWidth - r)
            {
                speedX = -speedX;
            }
            
            if(ball.y < r)
            {
                speedY = -speedY;
                trace(speedY);
            }
            
            if(ball.y >= this.stage.stageHeight - r)
            {
                speedY = -speedY;
            }
    //之所以全用if,没有else,是因为如果写成if,else if,else if,有一种情况符合走进去后就会完全跳出,当小球位置在四个角,例如同时符合ball.x < r和ball.y < r,就只会走进一种情况然后跳出方法,为了解决这个bug就全写成if。
    isHit(); 
    }
    private function isHit():void
    { if(ball.hitTestObject(rect))
    {
    // speedX = -speedX;因为碰到下面的挡板X坐标不需要取反的,只有y要变动
    speedY = -speedY;
    }
    }
    }
    }
  • 相关阅读:
    敏捷开发方法综述
    RBAC权限控制系统
    Thinkphp 视图模型
    Thinkphp 缓存和静态缓存局部缓存设置
    Thinkphp路由使用
    Thinkphp自定义标签
    异步处理那些事
    Thinkphp 关联模型
    Thinkphp 3.1. 3 ueditor 1.4.3 添加水印
    数据库组合
  • 原文地址:https://www.cnblogs.com/kuailezoe/p/2811969.html
Copyright © 2011-2022 走看看