上一篇的的主角=>红色小鸟:体型小,重量轻,攻击弱,无特效,可在滚动时消灭绿猪。 适合攻击玻璃与木头,攻击混凝土较弱。

b25d990149c69081277fb582

黄色小鸟:体型较小,重量较轻,特效为加速,使用前攻击弱,使用后攻击中等。攻击木头较强,攻击玻璃与混凝土很弱。

1e71f72448d4be564c088d82

对,没有错,它就这这篇文章的主角!

 

需求分析:冲锋陷阵鸟,在不点击加速的情况下,和红色小鸟样,当点击了加速按钮,X轴方向速度变成原来的3倍,Y轴方向变成原来的3倍,

冲锋状态下速度不受重力影响。

 

原理图:

yellowbirdfly

回顾一下红色小鸟:

冲锋鸟代码实现:

  <script type="text/javascript">
        function Bird(startPos, speed_X, speed_Y, element) {
            this.speed_X = speed_X;
            this.speed_Y = speed_Y;
            this.startPos = startPos;
            this.fly = function () {
                flyAsync(element, startPos, speed_X, speed_Y).start();
            }
        }
        var flyAsync = eval(Jscex.compile("async", function (e, startPos, speed_X, speed_Y) {
            document.getElementById("hdTag").value = 1;
            e.style.left = startPos.x;
            e.style.top = startPos.y;
            var maxY = startPos.y;
            //重力加速度
            var a_y = 40;
            var speed_YTemp = speed_Y;
            var speed_XTemp = speed_X;
            var time = 0;
            var addTag = 1;
            while (true) {
                $await(Jscex.Async.sleep(1));
                while ((e.offsetTop - (speed_Y - a_y) * 0.05 <= maxY)) {
                    if (document.getElementById("hdTag").value == 1) {
                        $await(Jscex.Async.sleep(50));
                        time = time + 50;
                        speed_Y = speed_Y - a_y;
                        startPos.y -= (speed_Y * 0.05);
                        startPos.x += speed_X * 0.05;
                        e.style.top = startPos.y + "px";
                        e.style.left = startPos.x + "px";
                    }
                    else {
                    //冲锋状态
                        $await(Jscex.Async.sleep(50));
                        time = time + 50;
                        if (addTag == 1) {
                            addTag = 0;
                            //速度翻三倍
                            speed_Y = 3 * speed_Y;
                            speed_X = 3 * speed_X;
                        }
                        startPos.y -= (speed_Y * 0.05);
                        startPos.x += speed_X * 0.05;
                        e.style.top = startPos.y + "px";
                        e.style.left = startPos.x + "px";
                    }
                }
                if (addTag == 0) {
                    addTag = 1; break;
                }
                document.getElementById("hdTag").value = 1;
                speed_X = speed_X / 2;
                speed_Y = -speed_Y / 3;
                if (speed_X < 6) break;
            }
        }));
        
        function Button1_onclick() {
            var bird = new Bird({ x: 0, y: 500 }, 400, 700, document.getElementById("birdDiv"));         
            bird.fly();

        }
        function Button2_onclick() {
            document.getElementById("hdTag").value = 0;
        }
    </script>
    <div >
    <input id="hdTag" value="1" type="hidden" />
     <input id="Button1" type="button" value="发射" onclick="return Button1_onclick()" />
    <input id="Button2" type="button" value="加速" onclick="return Button2_onclick()" />
       
        <div id="birdDiv" style="left: 0px; top: 500px; position: absolute; width: 20px;
            height: 30px;z-index:10;">
            <img src="yellowbird.png" alt=""/>
        </div>
       
    </div>

 

 

 

效果如下:

ps:

上篇由于

e.style.top = startPos.y + "px";
e.style.left = startPos.x + "px";

写成了

e.style.top = startPos.y ;
e.style.left = startPos.x ;

导致各大浏览器小鸟飞不起来,现在已经修正!

最新的Jscex 库,请上https://github.com/JeffreyZhao/jscex或者http://www.sndacode.com/projects/jscex/wiki下载吧····

【更多javascript异步编程系列】

javascript异步编程系列【一】----用Jscex画圆

javascript异步编程系列【二】----Jscex模拟重力场与google苹果logo的比较

javascript异步编程系列【三】----Jscex无创痕切入JqueryUI

javascript异步编程系列【四】----Jscex+Jquery UI打造游戏力度条

javascript异步编程系列【五】----Jscex制作愤怒的小鸟

作者:张磊(zhanglei's Blog)
出处: http://www.cnblogs.com/iamzhanglei
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

作者: 当耐特砖家 发表于 2011-08-25 07:48 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架