百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Phaser - 有趣的开源 HTML5 游戏框架

zhezhongyun 2025-02-11 14:24 32 浏览

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Phaser 是一个快速、免费且有趣的开源 HTML5 游戏框架。

Phaser 是一个快速、免费且有趣的开源 HTML5 游戏框架,提供跨桌面和移动 Web 浏览器的 WebGL 和 Canvas 渲染。可以使用 3rd 方工具将游戏编译为 iOS、Android 和本机应用程序。您可以使用 JavaScript 或 TypeScript 进行开发。

安装使用

安装 Web 服务器

我们会推荐WAMP Server或XAMPP,两者都有简单的设置指南。WAMP 专门将一个图标安装到您的系统托盘中,您可以从中停止和重新启动服务,以及修改 Apache 设置,例如为项目创建新的文件夹别名。

操作系统

作为一个本质上的 Unix 环境,OS X 上的可用选项比 Windows 多。但是,如果您想要像 WAMP 这样的“一体式”方法,具有干净且易于使用的界面,那么我们强烈推荐MAMP。

Grunt连接

Grunt是一个非常强大的安装工具,无论您是否将其用作 Web 服务器。从本质上讲,它是一个基于 JavaScript 的任务运行器,允许您自动执行繁琐耗时的任务。例如,我们在 Phaser 中使用它来构建我们的分发脚本。但它也可以使用插件Connect进行配置,以提供本地文件,充当 Web 服务器。

使用 Python 的简单 HTTP 服务器

如果您需要一个快速运行的 Web 服务器,并且不想搞乱设置 Apache 或下载应用程序,那么 Python 可以提供帮助。Python 带有一个简单的内置 HTTP 服务器,它可以提供来自任何本地文件夹的文件。

选择编辑器

您将需要一个编辑器来准备您的 JavaScript 代码。

示例:Sublime Text 这是 Phaser 团队用于构建框架和所有项目的编辑器。它甚至是编写本指南的编辑器。Sublime 应该被认为是一个非常强大的文本编辑器,而不是一个 IDE。

下载 Phaser

Phaser 3 可通过 GitHub、npm 和 CDN 获得:

  • 通过https、 ssh 或使用 GitHub Windows或Mac客户端克隆 git 存储库。
  • 下载为zip
  • 下载构建文件:phaser.js和phaser.min.js

通过npm安装:

npm install phaser

内容分发网络:

Phaser 位于 jsDelivr 上,这是一个“面向开发人员的超快速 CDN”。在您的 html 中包含以下内容:

或缩小版:

Hello World!

设置好编辑器、安装 Web 服务器并下载 Phaser 后,就可以创建一些东西并检查一切是否正常。

您需要发现您的“网络根”在您的机器上的位置。这是服务器在其中查找文件的文件夹。如果您在 Windows 上使用 WAMP,您可以通过单击系统托盘中的 WAMP 图标并从弹出菜单中选择“www 目录”来找到它。其他服务器将有其他确定位置的方法,但从这一点开始,我们将其称为“webroot”。

在 webroot 内部创建一个名为的文件index.html并将以下代码粘贴到其中:




    



    


打开您的网络浏览器并加载index.html页面。这可能就像在浏览器中输入localhost/或输入一样简单。127.0.0.1/或者您可能还需要指定端口号,这完全取决于您使用的服务器设置方法。

API 文档

打字稿定义

TypeScript 定义可以在文件types夹中找到。它们也在 中的类型条目中被引用package.json。根据您的项目,您可能需要将以下内容添加到tsconfig.json文件中:

"typeRoots": [
    "./node_modules/phaser/types"
],
"types": [
    "Phaser"
]

游戏状态

Class

通过

描述

StateManager

state

创建、管理和交换您的游戏状态。

State


您可以扩展的基本游戏状态对象。

装载机

Class

通过

描述

Cache

cache

缓存是存储和检索所有加载资产的地方。

Loader

load

加载所有外部资产类型(图像、音频、json、xml、txt)并将它们添加到缓存中。由 Statespreload方法自动调用。

LoaderParser


加载器用来处理复杂资产类型解析的静态类。

文本

Class

描述

Text

使用系统字体或 Web 字体显示文本,并带有可选的填充、阴影和描边。

BitmapText

使用位图字体文件的基于纹理的文本对象。

RetroFont

类似于 BitmapText 对象,但使用经典的精灵表。每个字符都是固定宽度的。

动画片

Class

通过

描述

AnimationManager

sprite.animations

在 Sprite 游戏对象上添加、播放和更新动画。

Animation


动画管理器创建的基础动画对象。

AnimationParser


Phaser Loader 在内部使用它来解析来自外部文件的动画数据。

FrameData


组成动画的 Frame 对象的集合。

Frame


动画的单帧。存储在 FrameData 对象中。

时间

Class

通过

描述

Time

time

所有 Phaser 时间相关操作所依赖的内核内部时钟。

Timer

time.create

包含一个或多个 TimerEvent 的自定义 Timer。可以使用一次,也可以设置为重复使用。

TimerEvent

time.add

单个时间相关的事件对象。属于 Phaser.Timer。

Tilemaps

Class

描述

Tilemap

一个 Tilemap 由一个或多个 TilemapLayers 和相关的瓦片数据组成。包含用于切片数据操作和 TilemapLayer 生成的方法。

TilemapLayer

Tilemap 中的单个图层。从 Phaser.Sprite 扩展并负责渲染自身。

Tileset

包含用于由 TilemapLayer 渲染图块的纹理和数据的对象。

Tile

具有相关属性的单个 Tile 对象。其中一个存在于地图中的每个图块中。

TilemapParser

用于解析外部加载的地图数据的静态类。通常由 Phaser.Loader 直接调用。

Phaser 3 示例

在本地创建一个index.html页面并将以下代码粘贴到其中:




     



    


这是一个标准的空网页。你会注意到有一个脚本标签正在拉入 Phaser 3 的构建,但除此之外,这个网页还没有做任何事情。现在让我们设置游戏配置。在标签之间粘贴以下内容:

var config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    physics: {
        default: 'arcade',
        arcade: {
            gravity: { y: 200 }
        }
    },
    scene: {
        preload: preload,
        create: create
    }
};

config是一个非常标准的 Phaser 3 游戏配置对象。如果可以的话,我们告诉config使用 WebGL 渲染器,将画布设置为 800x600 像素的大小,启用 Arcade Physics,最后调用preload和create函数。preload并且create还没有实现,所以如果你运行这段 JavaScript 代码,你会遇到错误。在 之后添加以下内容config:

var game = new Phaser.Game(config);

function preload ()
{
    this.load.setBaseURL('https://labs.phaser.io');

    this.load.image('sky', 'assets/skies/space3.png');
    this.load.image('logo', 'assets/sprites/phaser3-logo.png');
    this.load.image('red', 'assets/particles/red.png');
}

function create ()
{
}

game是一个使用我们的配置对象的 Phaser Game 实例config。preload我们还为和添加了函数定义create。该preload功能可帮助您轻松地将资产加载到游戏中。在preload中,我们将 Base URL 设置为 Phaser 服务器并加载 3 个 PNG 文件。该create函数是空的,所以是时候填充它了:

function create ()
{
    this.add.image(400, 300, 'sky');

    var particles = this.add.particles('red');

    var emitter = particles.createEmitter({
        speed: 100,
        scale: { start: 1, end: 0 },
        blendMode: 'ADD'
    });

    var logo = this.physics.add.image(400, 100, 'logo');

    logo.setVelocity(100, 200);
    logo.setBounce(1, 1);
    logo.setCollideWorldBounds(true);

    emitter.startFollow(logo);
}

在这里,我们将天空图像添加到游戏中并创建粒子发射器。该scale值意味着粒子最初会很大,随着寿命的延长会缩小到零。

创建 后emitter,我们添加一个名为logo. 由于logo是物理图像,logo默认情况下被赋予物理体。我们设置了一些属性logo:速度、反弹(或恢复)以及与世界边界的碰撞。这些属性将使我们的标志在屏幕上反弹。最后,我们告诉粒子发射器跟随 logo - 所以当 logo 移动时,粒子将从它流出。

在浏览器中运行它,您将看到以下内容:

—END—

开源协议:MIT License

开源地址:
https://github.com/photonstorm/phaser

相关推荐

JavaScript中常用数据类型,你知道几个?

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师Lison这篇文章我们了解一下JavaScript中现有的八个数据类型,当然这并不是JavaScr...

踩坑:前端的z-index 之bug一二(zh1es前端)

IE6下浮动元素bug给IE6下的一个div设置元素样式,无论z-index设置多高都不起作用。这种情况发生的条件有三个:1.父标签position属性为relative;2.问题标签无posi...

两栏布局、左边定宽200px、右边自适应如何实现?

一、两栏布局(左定宽,右自动)1.float+margin即固定宽度元素设置float属性为left,自适应元素设置margin属性,margin-left应>=定宽元素宽度。举例:HTM...

前端代码需要这样优化才是一个标准的网站

  网站由前端和后端组成,前端呈现给用户。本文将告诉您前端页面代码的优化,当然仍然是基于seo优化的。  就前端而言,如果做伪静态处理,基本上是普通的html代码,正常情况下,这些页面内容是通过页面模...

网页设计如何自学(初学网页设计)

1在Dreamweaver中搭建不同的页面,需要掌握HTML的语句了,通过调整各项数值就可以制作出排版漂亮的页面,跟着就可以学习一些可视化设计软件。下面介绍网页设计如何自学,希望可以帮助到各位。Dre...

1、数值类型(数值类型有)

1.1数据类型概览MySQL的数据类型可划分为三大类别:数值类型:旨在存储数字(涵盖整型、浮点型、DECIMAL等)。字符串类型:主要用于存储文本(诸如CHAR、VARCHAR之类)。日期/...

网页设计的布局属性(网页设计的布局属性是什么)

布局属性是网站设计中必不可少的一个重要的环节,主要用来设置网页的元素的布局,主要有以下属性。1、float:该属性设置元素的浮动方式,可以取none,left和right等3个值,分别表示不浮动,浮在...

Grid网格布局一种更灵活、更强大的二维布局模型!

当涉及到网页布局时,display:flex;和display:grid;是两个常用的CSS属性,它们都允许创建不同类型的布局,但有着不同的用法和适用场景。使用flex布局的痛点当我们使...

React 项目实践——创建一个聊天机器人

作者:FredrikStrandOseberg转发链接:https://www.freecodecamp.org/news/how-to-build-a-chatbot-with-react/前言...

有趣的 CSS 数学函数(css公式)

前言之前一直在玩three.js,接触了很多数学函数,用它们创造过很多特效。于是我思考:能否在CSS中也用上这些数学函数,但发现CSS目前还没有,据说以后的新规范会纳入,估计也要等很久。然...

web开发之-前端css(5)(css前端设计)

显示控制一个元素的显示方式,我们可以使用display:block;display:inline-block;display:none;其中布局相关的还有两个很重要的属性:display:flex;和...

2024最新升级–前端内功修炼 5大主流布局系统进阶(分享)

获课:keyouit.xyz/14642/1.前端布局的重要性及发展历程前端布局是网页设计和开发的核心技能之一,它决定了页面元素如何组织和呈现。从早期的静态布局到现代的响应式布局,前端布局技术经历了...

教你轻松制作自动换行的CSS布局,轻松应对不同设备!

在网页设计中,自动换行的CSS布局是非常常见的需求,特别是在响应式设计中。它可以让网页内容自动适应不同屏幕尺寸,保证用户在不同设备上都能够获得良好的浏览体验。本文将介绍几种制作自动换行的CSS布局的方...

晨光微语!一道 CSS 面试题,伴你静享知识治愈时光

当第一缕阳光温柔地爬上窗台,窗外的鸟鸣声清脆悦耳,空气中弥漫着清新的气息。在这宁静美好的清晨与上午时光,泡一杯热气腾腾的咖啡,找一个舒适的角落坐下。前端的小伙伴们,先把工作的疲惫和面试的焦虑放在一边,...

2023 年的响应式设计指南(什么是响应式设计优缺点)

大家好,我是Echa。如今,当大家考虑构建流畅的布局时,没有再写固定宽度和高度数值了。相反,小编今天构建的布局需要适用于几乎任何尺寸的设备。是不是不可思议,小编仍然看到网站遵循自适应设计模式,其中它有...