在基于TypeScript的LayaAir HTML5游戏开发中使用AMD

在基于TypeScript的LayaAir HTML5游戏开发中使用AMD

AMD

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。这是目前最流行的JavaScript/TypeScript代码的管理方式。本文介绍了如何在基于TypeScript的LayaAir HTML5游戏开发中使用AMD来组织代码。本文参考资料列表中包含了更多关于AMD的信息。

示例项目

示例项目源码从这里下载https://github.com/wildfirecode/HTML5-Game-AMD-TypeScript.

创建项目

依然使用LayaIDE来创建项目,因为要使用LayaAir引擎的库文件。

使用Visual Studio Code作为编码调试环境

为了能够对index.html有绝对的控制权,我们不能再使用LayaIDE,为了能够编译和调试项目,我们需要添加一些额外的配置。

复制示例项目中的.vscode文件夹到自己项目的根目录。

在index.html文件中引入所有的游戏代码编译文件

<script src="./js/game.js"></script>

在index.html文件中启动游戏。

<script>
    require(['GameMain'], function (GameMain) {
        new GameMain.default()
    });
</script>

增加LayaAir引擎适配模块adapter.ts,每一个LayaAir的类都要增加一个适配。比如Laya.EventDispatcher:

export const EventDispatcher = Laya.EventDispatcher;

使用示例项目中的tsconfig.json覆盖原来的tsconfig.json文件。

编译和调试

编译使用快捷键Ctrl+Shift+B,调试使用F5,过程基本和LayaAir相同。更多信息参考VSCode官方文档。

requirejs

从requirejs官方下载库文件,目前的最新版本是2.3.4,这是下载链接http://requirejs.org/docs/release/2.3.4/minified/require.js。把下载的库文件放入./bin目录,并且在index.html增加文件引用,具体参见示例项目。

插件推荐

为了能够自动import,需要下载额外的VSCode插件,这里是插件地址 https://marketplace.visualstudio.com/items?itemName=rbbit.typescript-hero。

参考

Javascript模块化编程(1)
Javascript模块化编程(2)
Javascript模块化编程(3)

在基于TypeScript的LayaAir HTML5游戏开发中使用AMD的相关教程结束。

相关推荐:

Flask 游戏开发实战:用会话状态模拟交互式猜词循环

本文讲解如何在flask中通过http请求-响应周期与session协作,替代传统while循环,实现面向听障儿童的法语hangman变体游戏的分步交互逻辑。 本文讲解如何在flask中通过http请求-响应周期与session协作,替代传统while循环,实现面向听障儿童的法语hangman变体游...

Flask 游戏开发实战:用会话状态模拟多步交互式猜词循环

本文详解如何在flask中通过http请求-响应周期与session持久化,替代传统while循环,实现面向听障儿童的法语hangman变体游戏的分步交互逻辑。 本文详解如何在flask中通过http请求-响应周期与session持久化,替代传统while循环,实现面向听障儿童的法语hangman变...

Flask 游戏开发实战:用会话状态驱动多步交互式猜词游戏

本文讲解如何在flask中通过http请求-响应循环与session协作,替代传统while循环,实现分步、可中断、状态持久的交互式游戏逻辑(如法语单词猜测),特别适用于面向听障儿童的教育类web应用。 本文讲解如何在flask中通过http请求-响应循环与session协作,替代传统while循环...

Python游戏开发中Tkinter子弹渲染与输入响应问题的完整修复指南

本文详解tkinter游戏开发中“wasd移动正常但无法射击”的根本原因——子弹对象未在画布上渲染,同时指出按键/鼠标事件绑定与游戏主循环协同失效的关键缺陷,并提供可直接运行的修复方案。 本文详解tkinter游戏开发中“wasd移动正常但无法射击”的根本原因——子弹对象未在画布上渲染,同时指出按键...

Python游戏开发进阶教程_Pygame动画与事件响应

Pygame实现流畅动画需手动控制帧率与图像切换,核心是循环更新画面并用Clock.tick()限帧、时间差驱动帧轮换;事件处理须持续调用event.get(),用状态字典记录按键,结合自定义USEREVENT实现解耦定时任务,并通过角色状态分离输入、逻辑与表现。 Pygame中实现流畅动画的关键 ...

Python游戏开发教程_Pygame基础实践

Pygame需Python3.7+,用pipinstallpygame安装并import验证;开发推荐VSCode或PyCharm;程序须含主循环、pygame.init()初始化、set_mode创建窗口、event处理QUIT、flip刷新画面;支持draw绘图与image加载;动画需key.g...

Windows 应用中 SQLite 数据库的正确存储位置与权限最佳实践

在windows系统中,将sqlite数据库文件直接放在`programfiles`目录下会导致写入失败(仅读取可用),根本原因在于该目录默认受系统保护、禁止普通用户/非提升进程写入;推荐方案是使用`programdata`目录——它专为多用户共享的程序数据设计,具备合适的默认acl,无需提权或修改...

Windows 应用中 SQLite 数据库的正确存储位置实践

windows系统下,sqlite数据库不应存放在受保护的programfiles目录中;推荐使用programdata(所有用户共享、应用可写)或localappdata(当前用户专用),以兼顾多会话运行、uac兼容性与权限安全。 在Windows平台上部署Python桌面应用时,将SQLite数...