头条小游戏

头条小游戏是一种开放能力。允许用户基于给定的API 编写游戏代码,最终生成可运行在接入小游戏功能的各产品APP上。

快速上手

安装开发工具

前往开发者工具下载页面 ,根据自己的操作系统下载对应的安装包进行安装。

文件结构

  1. .
  2. ├── game.js => 小游戏入口文件
  3. ├── game.json => 小游戏配置文件
  4. └── project.config.json => 工程配置文件

以上三个文件为小游戏的三个必要文件,开发者如有其它资源可以在根目录下自由建立 js, audio, images 等目录,规范自己的开发文件。

配置

game.json 示例

  1. {
  2. "deviceOrientation": "portrait",
  3. }

deviceOrientation

说明
portrait竖屏
landscape横屏

project.config.json 示例

  1. {
  2. "description": "项目描述",
  3. "setting": {
  4. "es6": true, // 声明使用的 js 语法版本
  5. }
  6. }

平台能力

tt API

本平台只能使用 JavaScript 来编写小游戏。小游戏的运行环境是一个 绑定了一些方法的 JavaScript VM。不同于浏览器,这个运行环境没有 BOMDOM API,只有 tt系列API。接下来我们将介绍如何用 tt API 来完成创建画布、绘制图形、显示图片以及响应用户交互等基础功能。

创建 Canvas

  1. var canvas = tt.createCanvas();

通过调用 tt.createCanvas() 接口,可以创建一个 Canvas 对象。用户第一次调用时, 获取到的是一个上屏Canvas,该 Canvas 已经显示在了屏幕上,且与屏幕等宽等高。小游戏运行期间,有且仅有一个上屏Canvas。

绘制

  1. var context = canvas.getContext('2d')
  2. context.fillStyle = '#ff00ff'
  3. context.fillRect(0, 0, 100, 100)

触摸事件

平台提供了一系列监听触摸事件的API:

动画能力

开发者可以利用定时器相关 API 实现动画效果,如下

全局对象

小游戏的运行环境不同于Web环境,在真机上运行时,没有BOM API,因此也就没有 window 对象以及其上面的各种属性。所以,从H5 迁移过来的游戏,开发者需要自己实现 window 对象的兼容(如果是利用游戏引擎开发的小游戏,导出的小游戏版本一般已经包含了一份adapter,适配了 window 对象)。同时,在小游戏的运行环境中,提供了全局对象 GameGlobal,所有全局定义的变量都是 GameGlobal 的属性。如:

  1. setTimeout === GameGlobal.setTimeout // true
  2. requestAnimationFrame === GameGlobal.requestAnimationFrame // true

同时,GameGlobal 是一个全局对象,也是一个循环引用的对象。

  1. GameGlobal.GameGlobal === GameGlobal

开放能力

平台允许开发者可以利用一些产品宿主提供的如登录,分享,以及不久的未来支持的支付,广告等一系列开放能力,用以完善自己的产品逻辑和体验。具体可以参考开放能力一栏。

快速调试

其他说明

代码包限制

通常情况下,每个小游戏允许上传的代码包总大小为 4MB,请开发者注意自己的游戏包大小。