[PhaserJS] 鼠标事件
鼠标事件
要想监听事件,需要先调用GameObject的setInteractive方法,该方法会将GameObject传给输入管理器,以便可以响应输入。
GameObject继承自EventEmitter(eventemitter3),因此具体标准的事件处理方法。
事件管理
事件方法 | 描述 |
---|---|
on(event, fn [, context]) | 新增事件 |
off(event [, fn] [, context] [, once]) | 取消事件 |
once(event, fn [, context]) | 增加一个单次事件 |
emit(event [, args]) | 触发事件 |
addListener(event, fn [, context]) | 新增事件 |
removeListener(event [, fn] [, context] [, once]) | 取消单个事件 |
removeAllListeners( [event]) | 取消所有事件 |
鼠标事件列表
事件名 | 描述 |
---|---|
pointerdown | 鼠标按下 |
pointerup | 鼠标抬起 |
pointermove | 鼠标在游戏对象上移动 |
pointerout | 鼠标移出游戏对象 |
pointerover | 鼠标移入游戏对象 |
wheel | 鼠标在游戏对象上滑动滚轮 |
简单示例
const star = this.add.star(250, 150, 5, 32, 64, 0xff0000, 1);
star.setInteractive();
star.on('pointerup', () => {
console.log('鼠标抬起事件');
});
完整示例
class SceneA extends Phaser.Scene {
constructor() {
super({
key: 'SceneA'
});
}
create() {
const star = this.add.star(250, 150, 5, 32, 64, 0xff0000, 1);
const text = this.add.text(160, 140, '状态', {
fixedWidth: 180,
align: 'center'
});
star.setInteractive();
star.on('pointerdown', () => {
text.setText('鼠标按下');
}, this);
star.on('pointerup', () => {
text.setText('鼠标抬起');
}, this);
star.on('pointermove', () => {
text.setText('鼠标移动' + Math.floor(Math.random() * 100));
}, this);
star.on('pointerout', () => {
text.setText('鼠标移出');
}, this);
star.on('pointerover', () => {
text.setText('鼠标移入');
}, this);
star.on('wheel', () => {
text.setText('滚轮滚动' + Math.floor(Math.random() * 100));
}, this);
}
}
new Phaser.Game({
width: 500,
height: 300,
scene: [SceneA]
});
在线体验
分类:
Phaser
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?