JavaScript小游戏--2048(移动端)

HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享。今天为大家介绍的事件主要是触摸事件:touchstart、touchmove和touchend。

  一开始触摸事件touchstart、touchmove和touchend是iOS版Safari浏览器为了向开发人员传达一些信息新添加的事件。因为iOs设备既没有鼠标也没有键盘,所以在为移动Safari浏览器开发交互性网页的时候,PC端的鼠标和键盘事件是不够用的。

  在iPhone 3Gs发布的时候,其自带的移动Safari浏览器就提供了一些与触摸(touch)操作相关的新事件。随后,Android上的浏览器也实现了相同的事件。触摸事件(touch)会在用户手指放在屏幕上面的时候、在屏幕上滑动的时候或者是从屏幕上移开的时候出发。下面具体说明:

  touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。

  touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。

  touchend事件:当手指从屏幕上离开的时候触发。

  touchcancel事件:当系统停止跟踪触摸的时候触发。关于这个事件的确切出发时间,文档中并没有具体说明,咱们只能去猜测了。

  上面的这些事件都会冒泡,也都可以取消。虽然这些触摸事件没有在DOM规范中定义,但是它们却是以兼容DOM的方式实现的。所以,每个触摸事件的event对象都提供了在鼠标实践中常见的属性:bubbles(起泡事件的类型)、cancelable(是否用 preventDefault() 方法可以取消与事件关联的默认动作)、clientX(返回当事件被触发时,鼠标指针的水平坐标)、clientY(返回当事件触发时,鼠标指针的垂直坐标)、screenX(当某个事件被触发时,鼠标指针的水平坐标)和screenY(返回当某个事件被触发时,鼠标指针的垂直坐标)。

var document_width = window.screen.availWidth;  //屏幕宽度
function prepare_for_mobile() {
    if (document_width < 500) {
        $(‘html‘).css({
            ‘font-size‘: ‘40px‘
        });

    }
}
//监听移动设备的触摸开始
document.addEventListener(‘touchstart‘,function (event) {
    startx = event.touches[0].pageX;
    starty = event.touches[0].pageY;
});
//监听移动设备的触摸移动
document.addEventListener(‘touchmove‘,function (evnet) {
    event.preventDefault();
});
//监听移动设备的触摸结束
document.addEventListener(‘touchend‘,function (event) {
    endx = event.changedTouches[0].pageX;
    endy = event.changedTouches[0].pageY;

    var x = endx - startx;
    var y = endy - starty;

    if(Math.abs(x) < 0.3*document_width && Math.abs(y) < 0.3*document_width){
        return;
    }

    if ($(‘#score‘).text == success_string) {
        new_game();
        return;
    }

    //x
    if(Math.abs(x) > Math.abs(y)){
        if(x > 0){
            //向右移动
            if (move_right()){
                setTimeout(‘generate_one_number()‘,210);
                setTimeout(‘is_gameover()‘,300);
            }
        } else {
            //向左移动
            if (move_left()){
                setTimeout(‘generate_one_number()‘,210);
                setTimeout(‘is_gameover()‘,300);
            }
        }
    } else if(Math.abs(x) < Math.abs(y)) { //y
        if (y < 0){
            //向上移动
            if (move_up()){
                setTimeout(‘generate_one_number()‘,210);
                setTimeout(‘is_gameover()‘,300);
            }

        } else {  //向下移动
            if (move_down()){
                setTimeout(‘generate_one_number()‘,210);
                setTimeout(‘is_gameover()‘,300);
            }
        }
    }

})
时间: 2024-10-29 19:11:23

JavaScript小游戏--2048(移动端)的相关文章

JavaScript小游戏--2048(PC端)

1.初始化棋局 $(document).ready(function() { prepare_for_mobile(); //适配移动端 new_game(); }); 2.开始新游戏 function new_game() { back = []; //初始化棋盘 init(); //在随机两个格子生成数字 generate_one_number(); generate_one_number(); } 3.初始化 function init() { for (var i = 0; i < 4;

[小游戏]2048

益智小游戏2048    玩法:    该游戏使用方向键让方块上下左右移动.如果两个带有相同数字的方块在移动中碰撞,则它们会合并为一个方块,且所带数字变为两者之和.每次移动时,会有一个值为2或者4的新方块出现.    可能不好理解,你玩几下就知道了.    这款游戏玩起来会让你”根本停不下来“,很有意思的.通关截图: 游戏官网:http://gabrielecirulli.github.io/2048/ date:2014-10-26

结对编程小游戏2048

作业要求: 自选题目(不少于500行代码),进行结对编程 轮流担任领航员和驾驶员 记录结对编程的过程,写成结对博客 1.结对题目,写清需求 2.上传代码(截图),两人合作的合影 3.约定的规范 4.记录时间 5.心得和体会 Deadline 9月18日 23:59:59 小组成员 019任帅昌 020禹继跃 1.结对题目:2048小游戏 需求分析:在人们学习工作之余,小游戏成为了人们打发时间做的必不可少的事情了,而2048这款小游戏它不仅能在你工作学习疲惫之后使你身心放松,还能益智 2.游戏代码

C语言小游戏: 2048.c

概要:2048.c是一个C语言编写的2048游戏,本文将详细分析它的源码和实现.C语言是一种经典实用的编程语言,本身也不复杂,但是学会C语言和能够编写实用的程序还是有一道鸿沟的.本文试图通过一个例子展示如何用C语言实现一个简单但有用的程序. 一.程序简介 本文分析的代码是mevdschee在GitHub上的项目2048.c,游戏的规则和安装说明都可以到主页查看,本文不再赘述.顺便一提,这个程序虽然是纯C编写的,但是它适用于Linux终端,因此如果你想要看一下运行效果可能需要一个Linux. 20

JavaScript小游戏--翻牌记忆游戏

翻牌记忆游戏源码 1.有8张图片,每张图片要放两次,生成如下数组,长为16,[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7] 其中两两相同的代表两张相同的图片,0对应文件夹image下的0.jpg,其余类似. var randArr = []; for(var j = 0; j < 2;j++){ for (var i = 0; i < m; i++) { randArr.push(i); } } 2.将上面的数组传入random(),将数组内容打乱,即将图片打乱(随机交换位

Chrome内置的断网Javascript 小游戏脚本示范

//示范面向对象 this 作用域 闭包 单例模式很好的示范 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 (function () { 5 'use strict'; 6 /** 7 * T

.NET手撸2048小游戏

.NET手撸2048小游戏 2048是一款益智小游戏,得益于其规则简单,又和2的倍数有关,因此广为人知,特别是广受程序员的喜爱. 本文将再次使用我自制的"准游戏引擎"FlysEngine,从空白窗口开始,演示如何"手撸"2048小游戏,并在编码过程中感受C#的魅力和.NET编程的快乐. 说明:FlysEngine是封装于Direct2D,重复本文示例,只需在.NET Core 3.0下安装NuGet包FlysEngine.Desktop即可. 并不一定非要做一层封装

【我的第一款App(“跑酷好基友” 英文名:BothLive) 登录App Store(一)】使用iOS7推出的Sprite Kit框架制作一款横版小游戏

从本篇文章开始,我将陆续用至少三篇文章介绍一下我个人的第一款上线App Store的游戏:“跑酷好基友”,英文名BothLive.从游戏制作.社交分享.App上传审核,以及版本更新迭代(如果有)几个方面来介绍.目前,这只是一个非常非常easy的超轻量级游戏. 说来也很有意思,本人一直从事iOS应用客户端的开发,对于iOS游戏制作从来也没花时间和心思.但是一个偶然的机会:2014年3月份公司派我去南京晓庄学院做一场开发讲座,讲座中需要向同学们演示一个小游戏的开发过程,于是我便利用iOS7推出的全新

小游戏runpig总结

前几天写了一个JavaScript小游戏,大概是这样的 demo:strongfanfan.top/RunPig  源代码:www.github.com/strongfanfan/RunPig 画风简约(low),技术实现上很简单,但是细节还是耗费了挺长时间的,本文主要复盘一下思路,和碰到的一些自以为的难点. 一.基本html+css骨架 二.基本逻辑 1.舞台相对定位,pig和障碍绝对定位,通过js动态对left,top赋值. 2.定时器定时执行render函数,形成动画效果,帧率60,定时间