mayufo
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>

<style>
*{
    padding:0px;
    margin:0px;
    font-family:"微软雅黑";}
body{
    background:#f1f1f1;
    font-family:"微软雅黑";
    font-size:16px;
    }
#info{
    text-align:center;
    }
#box{
    width: 800px;
    height: 450px;
    border: 1px solid #066;
    background: none repeat scroll 0% 0% #FFF;
    margin: 20px auto 0px;
    position: relative;
    top: 0px;
    left: 0px;
    }    
#left{
    width:130px;
    border:1px solid #066;
    position:relative;
    top:-1px;
    left:-152px;
    background:#ffc;
    padding:10px;
    }
#left p{
    font-size:16px;
    line-height:30px;
    }
#qq{
    position:absolute;
    top:0px;
    left:0px;
    width:800px;
    height:450px;
    
    }                
</style>
<script type="text/javascript" src="float.js">
</script>
<script type="text/javascript">
window.onload = function()
{
    var obtn = document.getElementById(\'info\').getElementsByTagName("input")[0];
    var oqq = document.getElementById(\'qq\'); 
    var obox = document.getElementById(\'box\');
    var ascore = obox.getElementsByTagName(\'p\');
    var score1 = score2 = 0;
    var speed = 1;
    var arr = [\'img/icon1.png\', \'img/icon2.png\', \'img/icon3.png\', \'img/icon4.png\', \'img/icon5.png\'];
    
    obtn.onclick = function ()
    {
        this.value = \'正在游戏...\';
        this.style.opacity = \'1\';
        this.disabled = \'disabled\';
        
        fnqq();
        function fnqq()
        {
            creat();
            drop(fnqq);
        };
        
        function init()
        {
            obtn.value = \'开始游戏\';
            obtn.style.opacity = \'1\';
            obtn.disabled = \'\';
            oqq.innerHTML = \'\';
            speed = 1;
            score1 = score2 = 0;
        };
        
        function check()
        {
            if( score1 == 25 )
            {
                alert(\'恭喜!\');
                init();
                return true;
            }
            if( score2 == 5 )
            {
                alert(\'真遗憾!\')
                init();
                return true;
            }
        };
        
        function creat()
        {
            oqq.innerHTML = \'<img style = "position: absolute; top: 0; left: \' + Math.round(Math.random() * 776) + \'px" src = "\' + arr[Math.round(Math.random() * (arr.length - 1))]+ \' "/>\';
        }
        
        function drop(fnend)
        {
            var icon = oqq.getElementsByTagName(\'img\')[0];
            speed += 0.8;
            domove(icon,\'top\',speed,50,426,function()
            {
                oqq.innerHTML = \'\';
                score2++;
                ascore[1].innerHTML = \'失分\' + score2 + \'分\';
                shake(obox,\'top\',function()
                {
                    if(check())
                    {
                        return;
                    }
                    fnend&&fnend();
                })
            })
            
            icon.onmouseover = function ()
            {
                clearInterval(icon.timer);
                icon.src = \'img/icon6.png\';
                shake(icon,\'left\',function()
                {
                    oqq.innerHTML = \'\';
                    score1++;
                    ascore[0].innerHTML = \'得分\' + score1 + \'分\';
                    if(check())
                    {
                        return;
                    }
                    fnend&&fnend();
                })
            }
        }
    }
}
</script>
</head>

<body>
<div id="info">
    <h2>你的鼠标有多快</h2>
    <p>游戏说明:点击“开始游戏”,随机掉下QQ表情,把鼠标划上去,千万别让它掉下去!!<br>
    划掉25个算你赢;掉下5个算你输 :)</p>
    <input type="button" value="开始游戏"></input>
</div>
<div id="box">
    <div id="left">
        <p>得分:0 分</p>
        <p>失分:0 分</p>
    </div>
    <div id="qq"></div>
</div>
</body>
</html>
function getstyle(obj,attr)
{
    return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj)[attr];
}


function domove (obj,attr,step,frequency,target,endfn)
{
    step = parseInt(getstyle(obj,attr))<target?step:-step;
    clearInterval(obj.timer);
    obj.timer = setInterval( function ()
    {
        var speed = parseInt(getstyle(obj,attr)) + step;
        if(step>0&&speed>target||step<0&&speed<target)
        {
            speed = target;
        }
        obj.style[attr] = speed + \'px\';
        if( speed == target )
        {
            clearInterval(obj.timer);
            endfn&&endfn();
        }
    },frequency); 
};

function opacity(obj,step,target,frequency,endfn)
{
    var currentOpacity = getstyle(obj,\'opacity\') * 100;
    step = currentOpacity < target?step:-step;
    clearInterval(obj.opacity)
    obj.opacity = setInterval (function ()
    {
        currentOpacity = getstyle(obj,\'opacity\') *100;
        var nextOpacity = currentOpacity + step;
        if(step>0&& nextOpacity>target || step<0&& nextOpacity < target )
        {
            nextOpacity = target;
        }
    obj.style.opacity = nextOpacity/100;
    obj.style.filter = \'alpha(opacity:)\' + nextOpacity +\')\';
    if(nextOpacity == target )
    {
        clearInterval(obj.opacity);
        endfn&&endfn();
    }    
    },frequency);
    
    
};

function shake(obj,attr,endfn)
{
    if( obj.shaked ) { return;  }
    obj.shaked = true;
    
    var num = 0;
    var timer = null;
    var arr = [];
    var pos = parseInt(getstyle(obj,attr));
    
    for( var i = 20; i > 0; i-=2 )
    {
        arr.push(i,-i);
    }
    arr.push(0);
    
    clearInterval(obj.shake);
    obj.shake = setInterval(function ()
    {
        obj.style[attr] = pos + arr[num] +\'px\';
        num++;
        if(num==arr.length)
        {
            clearInterval(obj.shake);
            endfn&&endfn();
            obj.shaked = false;
        }
    },50);
};

 

分类:

技术点:

相关文章: