phaser3 之 this.add.add.image

image(x, y, texture [, frame]) GameObjects.Image

参数: frame: string | number

var myimg = this.add.image(70, 530, 'down').setInteractive();

rotation 此游戏对象的角度(以弧度表示)。

如果想设置度数,可以使用 angle。

myimg.rotation = 180;
myimg.angle = 180 * Math.PI / 180;

frame :Phaser.Textures.Frame

此游戏对象用于渲染的纹理框架。

 this.load.spritesheet('button', 'assets/ui/flixel-button.png', { frameWidth: 80, frameHeight: 20 });
 const btn = this.add.image(10,100, 'button', 0).setOrigin(0).setScale(2).setInteractive();
 btn.frame = btn.scene.textures.getFrame('button', frame);

setInteractive( [hitArea] [, callback] [, dropZone]):

Input游戏对象的输入控制
将此游戏对象传递给输入管理器以启用它以进行输入。

var myimg = this.add.image(70, 530, 'down').setInteractive();
myimg.setInteractive( [shape] [, callback] [, dropZone]); // 将此游戏对象传递给输入管理器以启用它以进行输入

var downButton = this.add.image(70, 530, 'down').setInteractive();
downButton.on('pointerdown', function (event) { ... });

once(event, fn [, context])

为给定事件添加一次性侦听器。
参数:
event string | symbol 名称。
fn function 监听器功能。
context * <可选>这个 调用侦听器的上下文。
返回值:
this.

类型
Phaser.GameObjects.Image

setOrigin( [x] [, y])

设置此游戏对象的原点。
这些值在 0 到 1 的范围内给出。

参数:
x 数字 <可选> 0.5 水平原点值。
y 数字 <可选>X 垂直原点值。如果未定义,它将被设置为 的值x。

返回值:
这个游戏对象实例。

类型
Phaser.GameObjects.Image

 var robot = this.add.image(300, 200, 'robot').setOrigin(0.2,0.2); // 设置游戏实例20%,20%的点为游戏实例的原点,这个原点在世界中的位置是300,200

setPipeline(pipeline [, pipelineData] [, copyData])

设置此游戏对象的主 WebGL 管道。
pipelineData如果给出参数,还设置属性。
管道和后管道共享相同的管道数据对象。
参数:
pipeline string | Phaser.Renderer.WebGL.WebGLPipeline 管道的基于字符串的名称,或要设置的管道实例。
pipelineData object <可选>可选的管道数据对象,它被深度复制到pipelineData这个游戏对象的属性中。
copyData bool <可选>
默认:true 管道数据对象是否应该被深度复制到pipelineData这个游戏对象的属性中?如果false它将通过引用设置。

返回:
这个游戏对象实例。
Phaser.GameObjects.Image

setTint( [topLeft] [, topRight] [, bottomLeft] [, bottomRight])

在此游戏对象上设置附加色调。设置颜色

色调的工作原理是从游戏对象纹理中获取像素颜色值,然后将其乘以色调的颜色值。您可以提供任何一种颜色值,在这种情况下,整个游戏对象将被着色为该颜色。或者您可以为每个角提供颜色。颜色在游戏对象的范围内混合在一起。

要修改设置后的色调颜色,请使用新值再次调用此方法或使用该 tint属性一次设置所有颜色。或者,使用性质tintTopLeft,tintTopRight, tintBottomLeft andtintBottomRight`独立设置的角落颜色值。

删除色调调用clearTint。

要将其从附加色调转换为基于填充的色调,请将属性设置tintFill为true。

参数:
topLeft 数字 <可选> 0xffffff 应用于游戏对象左上角的色调。如果没有给定其他值,则均匀应用此值,为整个游戏对象着色。
topRight 数字 <可选>应用于游戏对象右上角的色调。
bottomLeft 数字 <可选>应用于游戏对象左下角的色调。
bottomRight 数字 <可选>应用于游戏对象右下角的色调。

返回:
这个游戏对象实例。

类型
Phaser.GameObjects.Image

img.setTint(0xF90619,0xff6600,0x00a0e9,0x1C225D);

var img = this.add.image(300, 300, 'megaset');
//框架中存储了自定义数据(请参见下面的JSON),我们可以使用这些数据对其着色:
img.setTint(img.frame.customData.tint);
img.clearTint();清除与此游戏对象关联的所有色调值。立即将颜色值设置回 0xffffff 并将色调类型设置为“additive”,这会导致纹理没有明显变化。

setAngle( [degrees]) 设置这个游戏对象的角度。

img.setAngle(20);

setFlipX(value) 设置此游戏对象的水平翻转状态。

水平翻转的游戏对象将在水平轴上反转呈现。翻转总是从纹理的中间发生,不会影响缩放值。如果这个游戏对象有一个物理身体,它不会改变身体。这只是一个渲染切换。
参数:
value 布尔值 翻转状态。false对于没有翻转,或被true翻转。

setFlipY(value) 设置此游戏对象的垂直翻转状态。

this.add.image(1920, 1080, 'bg').setOrigin(0).setFlipX(true).setFlipY(true);

texture :Phaser.Textures.Texture|Phaser.Textures.CanvasTexture

source < Phaser.Textures.TextureSource >

TextureSource 实例的数组。这些是此纹理独有的,包含实际的图像(或画布)数据。

this.image.texture.source[0].width / 2;

createBitmapMask( [renderable]) 创建并返回位图掩码。这个掩码可以被任何游戏对象使用,包括这个。

注意:位图蒙版仅适用于 WebGL。几何遮罩适用于 WebGL 和 Canvas。
要创建遮罩,您需要传入对可渲染游戏对象的引用。可渲染游戏对象是一种使用纹理进行渲染的对象,例如图像、精灵、渲染纹理或位图文本。
如果你不提供可渲染对象,而这个游戏对象有纹理,它会使用自己作为对象。这意味着您可以调用此方法从任何可渲染的游戏对象创建位图蒙版。

renderable: Phaser.GameObjects.GameObject <可选>
使用纹理的可渲染游戏对象,例如 Sprite。

const elephantLayer = this.add.layer();
const splat = this.make.image({ x: 400, y: 300, key: 'splat' }, false);
const mask = splat.createBitmapMask();

elephantLayer.setMask(mask);

setData/getData

values

const img = this.add.image(300, 300, 'gem');
img.setData('name', 'Red Gem Stone');
img.setData('age', 18);

img.getData('name')
img.data.values.age++

data

set/get

query

const img = this.add.image(300, 300, 'gem');
img.setDataEnabled();
img.data.set('hehe_1', 'Red Gem Stonehehe_1');
img.data.set('hehe_2', 'Red Gem Stonehehe_2');
img.data.set('age', 18);

img.data.get('name');
img.data.query(/^hehe/); // hehe开头的都会查询出来

setAlpha( [topLeft] [, topRight] [, bottomLeft] [, bottomRight])

const face = this.add.image(400, 300, 'face');
const sea = this.add.image(400, 300, 'turkey');

//  top left, top right, bottom left, bottom right
sea.setAlpha(1, 1, 0, 0);

alphaTopLeft 从游戏对象左上角开始的 alpha 值。该值是从角到游戏对象中心的插值。

sea.alphaTopLeft = 0;

alpha :number - 属性

alphaBottomLeft :number - 属性

alphaBottomRight :number - 属性

alphaTopRight :number - 属性

<think>我们正在处理用户关于Phaser 3游戏开发框架的教程和使用指南的请求。根据提供的引用和用户的问题,我们将构建一个结构化的回答,包括环境搭建、基本概念、代码示例以及相关问题。 首先,我们注意到用户提供的引用中包含了Phaser 3的相关信息: - 引用[1]:介绍了Phaser是一个HTML5游戏框架,支持现代浏览器(桌面和移动),只要浏览器支持canvas标签即可。 - 引用[2]:提供了Phaser基础入门的开发环境搭建与配置,包括一个简单的游戏示例代码。 - 引用[3]:介绍了Phaser3的渲染器类型(WebGL或Canvas)以及如何设置。 - 引用[4]:提醒了初学者要注意中文资料的版本问题(phaser2与phaser3不兼容),并建议以官方文档为主。 根据这些信息,我们将组织回答如下: 1. **Phaser 3简介**:简要介绍Phaser 3是什么,以及它的特点。 2. **环境搭建**:包括安装Phaser 3和创建项目的基本步骤。 3. **核心概念**:介绍Phaser 3中的场景(Scene)、预加载(preload)、创建(create)、更新(update)等概念。 4. **一个简单示例**:创建一个显示图片的简单游戏,并解释代码。 5. **进一步学习资源**:提供官方文档和教程的链接。 最后,根据用户要求,我们将生成相关问题。 注意:由于用户要求使用中文回答,并且需要按照系统级指令处理数学公式(但本问题不涉及数学公式,所以可以忽略),以及引用标识。在回答中,我们将引用提供的引用内容,并在末尾添加引用标识。 现在,我们开始撰写回答。</think>### Phaser 3 游戏开发入门指南 #### 一、环境搭建与配置 1. **安装Phaser 3** 通过npm安装: ```bash npm install phaser ``` 或CDN引入: ```html <script src="//cdn.jsdelivr.net/npm/phaser@3.60.0/dist/phaser.min.js"></script> ``` 2. **项目结构** 基础文件结构: ``` project/ ├── index.html ├── game.js └── assets/ └── images/ └── player.png ``` 3. **配置文件**(game.js) ```javascript const config = { type: Phaser.AUTO, // 自动选择WebGL或Canvas渲染[^3] width: 800, height: 600, physics: { default: &#39;arcade&#39;, // 内置物理引擎 arcade: { gravity: { y: 300 } } }, scene: { preload, create, update } // 三大生命周期函数 }; new Phaser.Game(config); ``` #### 二、核心概念与流程 1. **场景生命周期** - `preload()`:加载图片/音频等资源 ```javascript function preload() { this.load.image(&#39;player&#39;, &#39;assets/images/player.png&#39;); } ``` - `create()`:初始化游戏对象 ```javascript function create() { this.player = this.physics.add.sprite(100, 100, &#39;player&#39;); } ``` - `update()`:每帧执行的游戏逻辑 ```javascript function update() { if (this.cursors.left.isDown) this.player.x -= 5; } ``` 2. **物理系统** ```javascript create() { // 启用碰撞检测 this.physics.add.collider(player, platforms); // 添加重力效果 player.setBounce(0.2); } ``` #### 三、实战示例:控制角色移动 ```javascript // game.js let player, cursors; function create() { // 添加角色 player = this.physics.add.sprite(100, 450, &#39;player&#39;); player.setCollideWorldBounds(true); // 绑定键盘控制 cursors = this.input.keyboard.createCursorKeys(); } function update() { if (cursors.left.isDown) player.setVelocityX(-160); else if (cursors.right.isDown) player.setVelocityX(160); else player.setVelocityX(0); if (cursors.up.isDown && player.body.touching.down) player.setVelocityY(-330); } ``` #### 四、学习资源推荐 1. **官方资源** - [Phaser 3 官方文档](https://photonstorm.github.io/phaser3-docs/) - [官方示例库](https://phaser.io/examples) 2. **中文避坑指南** - 避免使用过时的Phaser 2中文站(内容已停止更新)[^4] - 推荐直接查阅官方文档的英文最新版 3. **实战教程** - [打砖块游戏开发教程](https://phaser.io/tutorials/making-your-first-phaser-3-game) - [跨平台部署指南](https://phaser.io/phaser3/devlog/2020/06/01/phaser-and-webpack) > 最佳实践:使用Webpack/Vite打包工具管理项目,支持模块化开发和热更新[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值