热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从贪吃蛇小游戏初步学习TizenWebApp

从贪吃蛇小游戏初步学习TizenWebApp开发本文会通过一个贪吃蛇小游戏来初步介绍下TizenWebApp的开发,用开发Web的方式来开发TizenApp应用。项

从贪吃蛇小游戏初步学习Tizen Web App开发

本文会通过一个贪吃蛇小游戏来初步介绍下Tizen Web App的开发,用开发Web的方式来开发Tizen App应用。
项目代码:https://github.com/yyfer/GluttonousSnake

开发环境

在开始写贪吃蛇之前,我们要准备好需要的开发环境,如下:

  • Tizen IDE,这里下载,Tizen项目的开发环境
  • Tizen Z3手机,用于测试(也可以用IDE自带的Emulator、Simulator做测试)
  • Chrome浏览器,用于测试(在编写代码的时候,直接用浏览器测试)

过程

Tizen Web App,顾名思义,是用开发Web的方式开发App应用。首先我们新建一个Web Project,我们选择Template、MOBILE-2.4-Basic,这里根据手机系统版本选择:

这里写图片描述

完成之后,获得一个项目结构:

这里写图片描述

从结构中可以看出,完全是一个web项目的结构:

  • css,样式文件,用于装饰页面
  • images,图片集
  • js,Javascript文件,存储应用逻辑
  • index.html,页面文件

开发完成之后的项目结构:

这里写图片描述

对于页面文件以及样式,这里就不多做介绍了,我们主要介绍下Javascript应用逻辑,从上图可以看出,根据不同功能将整个应用逻辑分为不同的模块:

  • canvas.js,绘制图像模块
  • data.js,数据计算模块
  • game.js,游戏模块
  • main.js,主程序入口
  • require.js,模块加载器,这里可以了解详情

canvas.js提供绘画功能,这里paint方法就是将game所持有的状态绘制出来。

define("canvas",[],function(){
var paint =function(game){
...
}
return {
paint : paint
};
});

data.js提供了数据计算,生成一条蛇、一个目标点,判断是否发生碰撞,改变蛇的状态。

define("data",[],function(){
...
return {
genSnake : genSnake,
genTarget : genTarget,
isCrash : isCrash,
isEat : isEat,
changeSnake : changeSnake
};
});

game.js定义了一个游戏类,引用了canvas、data模块。

define("game",["canvas","data"],function(canvas,data){
var Game = function(width,height,context,scoreContainer,alert){
this.width = width;
this.height = height;
this.cOntext= context;
this.scoreCOntainer= scoreContainer;
this.alert = alert;
this.bgColor = "#BFEFFF";
this.skColor = "#008B00";
this.tgColor = "#CD0000";
this.snake = [];
this.target = {};
this.rectR = 10;
this.initS = 5;
this.score = 0;
this.runSpeed = 100;
this.fps = 17;
this.isRunning = 1;
//setInterval
this.paintTask = null;
this.runTask = null;
}
...
return Game;
});

main.js是整个应用的入口

require.config({
paths:{
canvas:"canvas",
game:"game",
data:"data"
}
});
var id = "gs";
require(["game"],function(Game){
//get canvas object
var canvas = document.getElementById("gs");
//initsize
...
//canvas
var cOntext= context || canvas.getContext("2d");
var width = canvas.width;
var height = canvas.height;
var scoreCOntainer= document.getElementsByClassName("score");
var alert = document.getElementById("alert");
//game start
var game = game || new Game(width,height,context,scoreContainer,alert);
game.start();
//events
...
});

到这里,大致介绍完了整个应用的结构,主要是由Javascript完成的,这也是Web App开发的主要方式。

安装Tizen App

一般在开发web app应用的时候,首先是会通过浏览器去测试应用的基本逻辑,待项目开发基本完成之后再安装的到相应的手机上。对于Tizen App的安装,可以借助Tizen IDE来进行。(不用浏览器直接用手机测试也OK,但是没浏览器方便,不过浏览器也会没考虑到手机的一些具体状况)。

在应用打包部署之前,首先需要创建一份属于你个人以及设备的签名文件(为了应用的安全性),IDE->Register Certificate:

这里写图片描述

  1. 选择Mobile/Wearable,应用类型
  2. 新建一个Security Profile,输入一个名字即可
  3. 创建一份作者认证证书,输入必填项,并且需要一个三星的账户认证(毕竟三星的应用)
  4. 创建一份设备认证证书,这里将你的Tizen手机连上电脑,即可查找到你的手机(需要打开手机的开发者选项)

    这里写图片描述

签名认证完成之后,就可以打包你的Tizen Web项目,项目右键->Build Package,这时候项目根目录出现一个项目同名的.wgt文件(和Android下的.apk文件类似),你可以把该文件copy至创建过设备认证证书的手机上,安装即可;也可以通过项目右键->run as->Tizen Web Application,这时候即会打包项目部署到连接的手机上并打开应用。

其他

Tizen项目开发过程可能会遇到一些问题,可以通过以下方式查找解决办法:

  • Tizen官方社区,https://developer.tizen.org/community/tip-tech
  • 谷歌,https://www.google.com
  • StackOverflow等

推荐阅读
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
author-avatar
Lyceenne
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有