入门

起步

引用

上手 Tiny.js 最简单的方法是使用 tinyjs-cli 来初始化。 你也可以创建一个本地 .html 文件,然后通过如下方式引入 Tiny.js:

<script src="https://gw.alipayobjects.com/as/g/tiny/tiny/1.1.9/tiny.js"></script>

或使用debug版本:

<script src="https://gw.alipayobjects.com/as/g/tiny/tiny/1.1.9/tiny.debug.js"></script>

新建App

const config = {
  showFPS: true, // 显示帧频
  dpi: 1.5, // 分辨率
  renderOptions: {
    backgroundColor: 0x2a3145 // 画布背景色
  }
};
const app = new Tiny.Application(config);

新建场景

class StartLayer extends Tiny.Container {
  constructor() {
    super();
  }
}

新建精灵

// 通过 fromImage 实例化精灵
const sprite = Tiny.Sprite.fromImage('https://gw.alipayobjects.com/as/g/tiny/resources/1.0.0/images/logo.png');

完整的DEMO

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Tiny.js DEMO</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0" />
<style>
html, body, p, div {margin:0;padding:0;}
</style>
</head>
<body>
<script src='https://gw.alipayobjects.com/as/g/tiny/tiny/1.1.9/tiny.js'></script>
<script>
  const config = {
    showFPS: true, // 显示帧频
    dpi: 1.5, // 分辨率
    renderOptions: {
      backgroundColor: 0x2a3145 // 画布背景色
    }
  };

  // 新建App
  const app = new Tiny.Application(config);

  // 新建场景
  class StartLayer extends Tiny.Container {
    constructor() {
      super();

      // 通过 fromImage 实例化精灵
      var sprite = Tiny.Sprite.fromImage('https://gw.alipayobjects.com/as/g/tiny/resources/1.0.0/images/logo.png');
      // 设置精灵的中心点
      sprite.setAnchor(0.5);
      // 设置精灵相对画布的位置,此处设置居中
      sprite.setPosition(Tiny.WIN_SIZE.width / 2, Tiny.WIN_SIZE.height / 2);
      // 将精灵添加到场景中
      this.addChild(sprite);
    }
  }

  // 启动
  app.run(new StartLayer());
</script>
</body>
</html>

效果如下图:

创建动画

现在,我们看到了运行后的效果,那么,如何让精灵动起来呢?

在 StartLayer 构造函数后添加如下代码:

// 新建 action
const rotateTo360Action = Tiny.RotateTo(2000, {rotation: Tiny.deg2radian(360)});
// 执行 action RepeatForever
sprite.runAction(Tiny.RepeatForever(rotateTo360Action));

看,精灵不停的旋转起来了。

绑定动作

现在,我们想要让精灵对触发的动作作出反馈,比如:点击。

在 StartLayer 构造函数后添加如下代码:

// 设置精灵可交互的
sprite.setEventEnabled(true);
// 绑定 tap 和 mouseup 事件
sprite.on('tap', () => {
  console.log('taped!');
});

使用加载器

对于资源文件较多的游戏,加载器是必要的,使用 Tiny.Loader 可以很方便的加载图片、音频等文件。

// 声明资源文件
const resources = [
  'https://zos.alipayobjects.com/rmsportal/nJBojwdMJfUqpCWvwyoA.png',
  'https://zos.alipayobjects.com/rmsportal/kkroUtIawGrWrqOLRmjq.jpg',
  'https://zos.alipayobjects.com/rmsportal/jkgwjYSFHRkorsKaZbng.jpeg',
  'https://zos.alipayobjects.com/rmsportal/HAacythTETlcsPxEePbk.webp',
  '../assets/text.txt',
  'https://os.alipayobjects.com/rmsportal/atrIuwPurrBiNEyWNdQA.ogg'
];
//执行加载
Tiny.Loader.run({
  resources,
  // 加载进度
  onProgress: (per) => {
    console.log('percent:', per + '%');
  },
  // 单个资源加载完成后的回调
  onComplete: (resourceLoader, resource) => {
    console.log(resource.url);
  },
  // 所有资源加载完成后的回调
  onAllComplete: (resourceLoader, object) => {
    console.log('all complete');
    // 这里执行游戏的主场景,如:
    // app.run(new StartLayer());
  }
});