窗口和视图#

class arcade.Section(left: int, bottom: int, width: int, height: int, *, name: str | None = None, accept_keyboard_keys: bool | Iterable = True, accept_mouse_events: bool | Iterable = True, prevent_dispatch: Iterable | None = None, prevent_dispatch_view: Iterable | None = None, local_mouse_coordinates: bool = False, enabled: bool = True, modal: bool = False, draw_order: int = 1)[源代码]#

基类:

部分表示视口事件的矩形部分,根据其在屏幕上的位置将事件调度到该部分。

参数:
  • left -- 此部分的左侧位置

  • bottom -- 此部分的底部位置

  • width -- 此部分的宽度

  • height -- 这一段的高度

  • name -- 此部分的名称

  • accept_keyboard_keys (Union[bool, Iterable]) -- 此部分是否通过捕获键盘键。键盘事件。如果参数是可迭代的,则表示在按下/释放事件中捕获的键盘键:例如: [arcade.key.UP, arcade.key.DOWN] 将仅捕获这两个密钥

  • accept_mouse_events (Union[bool, Iterable]) -- 此部分是否捕获鼠标事件。如果参数是可迭代的,则表示捕获的鼠标事件。例如: ['on_mouse_press', 'on_mouse_release'] 只会捕捉到这两个事件。

  • prevent_dispatch -- 不会调度到后续节的事件名称列表。您可以传递None(默认)或{True}以阻止调度所有事件。

  • prevent_dispatch_view -- 不会调度到视图的事件名称列表。您可以传递None(默认)或{True}以阻止将所有事件调度到视图。

  • local_mouse_coordinates -- 如果为True,则分区鼠标事件将收到与分区尺寸和位置相关的x,y坐标分区(与屏幕无关)

  • enabled -- 如果为FALSE,则该部分不会捕获任何事件

  • modal -- 如果为True,则该节将是模式节:将阻止其他节上的更新和事件捕获。也将最后(在顶部)绘制,但首先捕获事件。

  • draw_order -- 调用ON_DRAW时此部分的顺序。数字越低,抽签时间越早。这可以不同于事件捕获顺序或由插入顺序定义的ON_UPDATE顺序。

get_xy_screen_relative(section_x: int, section_y: int)[源代码]#

从截面坐标返回屏幕坐标

get_xy_section_relative(screen_x: int, screen_y: int)[源代码]#

从屏幕坐标返回截面坐标

mouse_is_on_top(x: int, y: int) bool[源代码]#

检查当前鼠标位置是否在此部分的顶部

on_draw()[源代码]#
on_hide_section()[源代码]#
on_key_press(symbol: int, modifiers: int)[源代码]#
on_key_release(_symbol: int, _modifiers: int)[源代码]#
on_mouse_drag(x: int, y: int, dx: int, dy: int, _buttons: int, _modifiers: int)[源代码]#
on_mouse_enter(x: int, y: int)[源代码]#
on_mouse_leave(x: int, y: int)[源代码]#
on_mouse_motion(x: int, y: int, dx: int, dy: int)[源代码]#
on_mouse_press(x: int, y: int, button: int, modifiers: int)[源代码]#
on_mouse_release(x: int, y: int, button: int, modifiers: int)[源代码]#
on_mouse_scroll(x: int, y: int, scroll_x: int, scroll_y: int)[源代码]#
on_resize(width: int, height: int)[源代码]#
on_show_section()[源代码]#
on_update(delta_time: float)[源代码]#
overlaps_with(section: Section) bool[源代码]#

检查此节是否与另一节重叠

should_receive_mouse_event(x: int, y: int) bool[源代码]#

检查当前分区是否应在给定位置接收鼠标事件

bottom#

此部分的底边

draw_order#

返回绘制顺序状态数字越小,此部分将越早绘制

enabled#

启用或禁用此部分

height#

这一段的高度

left#

此部分的左边缘

modal#

返回模式状态(阻止以下部分接收输入事件和更新)

right#

此部分的右边缘

section_manager#

返回节管理器

top#

此部分的上边缘

view#

此部分设置所在的视图

width#

此部分的宽度

window#

查看窗口

class arcade.SectionManager(view: View)[源代码]#

基类:

这将管理一个视图具有的不同部分。将事件调度到正确的部分、绘制顺序等操作。

add_section(section: Section, at_index: int | None = None, at_draw_order: int | None = None) None[源代码]#

向该分区添加分区管理器将触发分区。如果启用分区,则为ON_SHOW_SECTION

参数:
  • section -- 要添加到此分区管理器的分区

  • at_index -- 在该索引处插入事件捕获和更新事件的节。如果末尾没有

  • at_draw_order -- 以特定的绘图顺序插入横断面。覆盖第.DRAW_ORDER节

clear_sections() None[源代码]#

如果启用,则删除所有节并为每个节调用ON_HIDE_SECTION

disable() None[源代码]#

禁用所有区段禁用区段将触发区段。ON_HIDE_SECTION

disable_all_keyboard_events() None[源代码]#

从所有分区中删除键盘事件处理

dispatch_keyboard_event(event: str, *args, **kwargs) bool | None[源代码]#

将键盘事件调度到正确部分的泛型方法

参数:
  • event -- 要调度的键盘事件名称

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

dispatch_mouse_enter_leave_events(event_origin: str, x: int, y: int, *args, **kwargs) bool | None[源代码]#

此帮助器方法将根据“On_MICE_Motion”和“On_MICE_Drag”事件将鼠标进入/离开事件分派到部分。还将调度调用此方法的事件(EVENT_ORIGURCE

参数:
  • event_origin -- 调用此方法的鼠标事件名称。此活动将在此处调用。

  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

dispatch_mouse_event(event: str, x: int, y: int, *args, current_section: Section | None = None, **kwargs) bool | None[源代码]#

将鼠标事件调度到正确部分的泛型方法

参数:
  • event -- 要调度的鼠标事件名称

  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • current_section -- 此鼠标事件应传递到的节。如果没有,将基于x,y坐标检索应接收此事件的所有节

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

enable() None[源代码]#

启用所有分区启用分区将触发分区。on_show_section

get_first_section(x: int, y: int, *, event_capture: bool = True) Section | None[源代码]#

根据x,y位置返回第一个节

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • event_capture -- True将使用事件捕获尺寸,False将使用截面绘制大小

返回:

部分如果与参数匹配,否则不匹配

get_section_by_name(name: str) Section | None[源代码]#

返回具有给定名称的第一节:param name:所需节的名称:Return:具有所提供名称的第一节。别无选择

get_sections(x: int, y: int, *, event_capture: bool = True) Generator[Section, None, None][源代码]#

返回基于x,y位置的节列表

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • event_capture -- True将使用事件捕获尺寸,False将使用截面绘制大小

返回:

具有与参数匹配的部分的生成器

on_draw() None[源代码]#

在每个事件循环上调用以绘制它时,会自动为每个具有摄影机的部分调用camera.use(),然后在需要时通过调用默认的SectionManager摄影机来重置摄影机效果。SectionManager照相机默认为具有整个屏幕的视区和投影的照相机

on_hide_view() None[源代码]#

当视图为Hide时调用。在此之前,Window.Hide_view方法调用

on_key_press(*args, **kwargs) bool | None[源代码]#

在相应的部分或视图上触发ON_KEY_PRESS事件

参数:
  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_key_release(*args, **kwargs) bool | None[源代码]#

在相应的部分或视图上触发ON_KEY_RELEASE事件

参数:
  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_mouse_drag(x: int, y: int, *args, **kwargs) bool | None[源代码]#

此方法调度ON_MOUSE_Drag,并计算是否应触发ON_MOUSE_ENTER/Leave

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_mouse_enter(x: int, y: int, *args, **kwargs) bool | None[源代码]#

当鼠标进入窗口空间时触发,将在相应的部分或视图上触发ON_MOUSE_ENTER

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_mouse_leave(x: int, y: int, *args, **kwargs) bool | None[源代码]#

当鼠标离开窗口空间时触发,将在相应的部分或视图上触发ON_MOUSE_LEVE

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_mouse_motion(x: int, y: int, *args, **kwargs) bool | None[源代码]#

此方法调度ON_MOUSE_MOTION,并计算是否应触发ON_MOUSE_ENTER/Leave

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_mouse_press(x: int, y: int, *args, **kwargs) bool | None[源代码]#

在相应的节或视图上触发ON_MOUSE_PRESS事件

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_mouse_release(x: int, y: int, *args, **kwargs) bool | None[源代码]#

在相应的节或视图上触发ON_MOUSE_RELEASE事件

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_mouse_scroll(x: int, y: int, *args, **kwargs) bool | None[源代码]#

在相应的节或视图上触发ON_MOUSE_SCROLL事件

参数:
  • x -- X轴坐标

  • y -- Y轴坐标

  • args -- 应传递给调度的事件的任何其他位置参数

  • kwargs -- 应传递给调度的事件的任何其他关键字参数

返回:

EVENT_HANDLED或EVENT_UNHANDLED,或调度的方法返回的任何值

on_resize(width: int, height: int) None[源代码]#

在调整窗口大小时调用。

参数:
  • width -- 屏幕的新宽度

  • height -- 屏幕的新高度

on_show_view() None[源代码]#

在显示视图时调用,在此之前由Window.show_view方法调用View.on_show_view

on_update(delta_time: float) None[源代码]#

在每个事件循环上调用。

参数:

delta_time -- 自上次调用此方法以来的增量时间

remove_section(section: Section) None[源代码]#

从此分区管理器中删除分区

参数:

section -- 要删除的节

sort_section_event_order() None[源代码]#

这将根据插入顺序和节按事件捕获顺序(和更新)对节进行排序。模式

sort_sections_draw_order() None[源代码]#

这将根据section.Draw_Order和section.mode.按绘制顺序对部分进行排序

has_sections#

如果此节管理器具有节,则返回TRUE

is_current_view#

返回该节管理器视图是否为视图窗口上的当前视图(也称为:当前正在显示的视图

sections#

返回节列表的属性

class arcade.NoOpenGLException[源代码]#

基类:Exception

当我们无法获取OpenGL 3.3+上下文时出现异常

class arcade.View(window: Window | None = None)[源代码]#

基类:

在一个窗口中支持不同的视图/屏幕。

add_section(section, at_index: int | None = None, at_draw_order: int | None = None) None[源代码]#

将横断面添加到视图横断面管理器。

参数:
  • section -- 要添加到此分区管理器的分区

  • at_index -- 在该索引处插入事件捕获和更新事件的节。如果末尾没有

  • at_draw_order -- 以特定的绘图顺序插入横断面。覆盖第.DRAW_ORDER节

clear(color: Tuple[int, int, int] | Tuple[int, int, int, int] | None = None, color_normalized: Tuple[float, float, float, float] | None = None, viewport: Tuple[int, int, int, int] | None = None)[源代码]#

使用通过设置的配置背景色清除窗口 arcade.Window.background_color

参数:
  • color -- 使用下列选项之一覆盖当前背景颜色:1.a Color 实例2.3或4长度RGB/RGBA tuple 字节值的百分比(0到255)

  • color_normalized -- (可选)使用规格化值(0.0到1.0)覆盖当前背景颜色。例如,(1.0,0.0,0.0,1.0)使窗口内容变为红色。

  • viewport (Tuple[int, int, int, int]) -- 要清除的视区范围

on_draw()[源代码]#

在应绘制此视图时调用

on_hide_view()[源代码]#

在隐藏此视图时调用一次。

on_key_press(symbol: int, modifiers: int)[源代码]#

覆盖此功能以添加按键功能。

参数:
  • symbol -- 按下的键

  • modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_key_release(_symbol: int, _modifiers: int)[源代码]#

重写此函数以添加按键释放功能。

参数:
  • _symbol -- 按下的键

  • _modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_mouse_drag(x: int, y: int, dx: int, dy: int, _buttons: int, _modifiers: int)[源代码]#

覆盖此函数以添加鼠标按钮功能。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • dx -- 自上次调用此方法以来x的变化

  • dy -- 自上次调用此方法以来y的更改

  • _buttons -- 按下了哪个按钮

  • _modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_mouse_enter(x: int, y: int)[源代码]#

当鼠标移入窗口时调用。如果当前正在拖动鼠标,则不会触发此事件。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

on_mouse_leave(x: int, y: int)[源代码]#

当鼠标移出窗口时调用。如果当前正在拖动鼠标,则不会触发此事件。请注意,鼠标指针的坐标将位于窗口矩形之外。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

on_mouse_motion(x: int, y: int, dx: int, dy: int)[源代码]#

覆盖此函数以添加鼠标功能。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • dx -- 自上次调用此方法以来x的变化

  • dy -- 自上次调用此方法以来y的更改

on_mouse_press(x: int, y: int, button: int, modifiers: int)[源代码]#

覆盖此函数以添加鼠标按钮功能。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • button -- 哪个按钮被按下了。其中之一:arcade.MOUSE_BUTTON_LEFT,arcade.MOUSE_BUTTON_RIGHT,arcade.MOUSE_BUTTON_MIDE.

  • modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_mouse_release(x: int, y: int, button: int, modifiers: int)[源代码]#

覆盖此函数以添加鼠标按钮功能。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • button -- 哪个按钮被按下了。其中之一:arcade.MOUSE_BUTTON_LEFT,arcade.MOUSE_BUTTON_RIGHT,arcade.MOUSE_BUTTON_MIDE.

  • modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_mouse_scroll(x: int, y: int, scroll_x: int, scroll_y: int)[源代码]#

用户移动滚轮。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • scroll_x -- 自上次调用以来已滚动的x个像素的ammout

  • scroll_y -- 自上次调用以来滚动的y个像素的ammout

on_resize(width: int, height: int)[源代码]#

在此视图处于活动状态时调整窗口大小时调用。 on_resize() 也是单独调用的。默认情况下,此方法不执行任何操作,可以重写以处理调整大小逻辑。

on_show()[源代码]#

已弃用。使用 on_show_view() 取而代之的是。

on_show_view()[源代码]#

在显示视图时调用一次。

on_update(delta_time: float)[源代码]#

被覆盖

has_sections#

如果视图包含节,则返回

section_manager#

节管理器的延迟实例化

class arcade.Window(width: int = 800, height: int = 600, title: str | None = 'Arcade Window', fullscreen: bool = False, resizable: bool = False, update_rate: float = 0.016666666666666666, antialiasing: bool = True, gl_version: Tuple[int, int] = (3, 3), screen: Screen | None = None, style: str | None = None, visible: bool = True, vsync: bool = False, gc_mode: str = 'context_gc', center_window: bool = False, samples: int = 4, enable_polling: bool = True, gl_api: str = 'gl', draw_rate: float = 0.016666666666666666)[源代码]#

基类:BaseWindow

Window类构成了使用Arade的大多数高级游戏的基础。它代表屏幕上的一个窗口,并管理事件。

参数:
  • width -- 窗口宽度

  • height -- 窗高

  • title -- 标题(显示在标题栏中)

  • fullscreen -- 这应该是全屏显示吗?

  • resizable -- 用户可以调整窗口大小吗?

  • update_rate -- 运行ON_UPDATE事件的频率。

  • draw_rate -- 运行ON_DRAW事件的频率。(这是FPS限制)

  • antialiasing -- 是否应该启用OpenGL的抗锯齿功能?

  • gl_version -- 要请求的OpenGL版本。这是 (3, 3) 默认情况下,并且在使用更高级的OpenGL功能时可以被覆盖。

  • screen -- 传递一个侏儒 Screen 以请求将窗口放置在其上。看见 pyglet's window size & position guide 了解更多信息。

  • style -- 请求非默认窗口样式,如无边框。有些款式只在某些情况下有效。看见 pyglet's guide to window style 了解更多信息。

  • visible -- 窗口是否应立即可见

  • vsync -- 在交换缓冲区之前等待垂直屏幕刷新这可以使动画和移动看起来更流畅。

  • gc_mode -- 决定应如何垃圾收集OpenGL对象(“CONTEXT_GC”(默认)或“AUTO”)

  • center_window -- 如果为True,将使窗口居中。

  • samples -- 抗锯齿中使用的采样数(默认为4)。通常是2、4、8或16。

  • enable_polling -- 已启用输入轮询功能。这使得 keyboardmouse 可用的属性。

activate()[源代码]#

激活此窗口。

center_window() None[源代码]#

使窗口在屏幕上居中。

clear(color: Tuple[int, int, int] | Tuple[int, int, int, int] | None = None, color_normalized: Tuple[float, float, float, float] | None = None, viewport: Tuple[int, int, int, int] | None = None)[源代码]#

使用通过设置的配置背景色清除窗口 arcade.Window.background_color

参数:
  • color -- 使用下列选项之一覆盖当前背景颜色:1.a Color 实例2.3或4长度RGB/RGBA tuple 字节值的百分比(0到255)

  • color_normalized -- (可选)使用规格化值(0.0到1.0)覆盖当前背景颜色。例如,(1.0,0.0,0.0,1.0)使窗口内容变为红色。

  • viewport (Tuple[int, int, int, int]) -- 要清除的视区范围

close()[源代码]#

关上窗户。

dispatch_events()[源代码]#

调度事件

flip()[源代码]#

窗口帧缓冲区通常有后台缓冲区和前台缓冲区。此方法使后台缓冲区可见,并隐藏前台缓冲区。一个帧被渲染到后台缓冲区中,因此此方法显示我们当前处理的帧。

此方法还会在交换缓冲区之前对OpenGL资源进行垃圾回收。

get_location() Tuple[int, int][源代码]#

返回窗口的X/Y坐标

返回:

窗口位置的X、Y

get_size() Tuple[int, int][源代码]#

获取窗口的大小。

返回:

(宽度、高度)

get_system_mouse_cursor(name)[源代码]#

获取系统鼠标光标

hide_view()[源代码]#

隐藏当前活动的视图(如果有),使我们返回 on_drawon_update 窗口中的函数。

如果要切换视图,则不需要调用此选项。只需拨打 show_view 再来一次。

maximize()[源代码]#

最大化窗口。

minimize()[源代码]#

最小化窗口。

on_draw()[源代码]#

覆盖此函数以添加自定义绘图代码。

on_key_press(symbol: int, modifiers: int)[源代码]#

当按下键时调用一次。

覆盖此功能以添加按键功能。

小技巧

如果您想要按键的长度影响游戏,您还需要覆盖 on_key_release()

参数:
  • symbol -- 刚按下的钥匙

  • modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_key_release(symbol: int, modifiers: int)[源代码]#

在释放键时调用一次。

重写此函数以添加按键释放功能。

需要处理密钥释放的情况包括:

  • 一种节奏游戏,音符必须保持一定的时间

  • 根据按键被按下的时间长短而改变强度的“充电”动作

  • 显示当前按下的键

参数:
  • symbol -- 刚刚发布的钥匙

  • modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_mouse_drag(x: int, y: int, dx: int, dy: int, buttons: int, modifiers: int)[源代码]#

在鼠标按下按钮移动时重复调用。

重写此函数以处理拖动。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • dx -- 自上次调用此方法以来x的变化

  • dy -- 自上次调用此方法以来y的更改

  • buttons -- 按下了哪个按钮

  • modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_mouse_enter(x: int, y: int)[源代码]#

每当鼠标进入屏幕上的窗口区域时调用一次。

如果当前正在拖动鼠标,则不会触发此事件。

参数:
  • x --

  • y --

on_mouse_leave(x: int, y: int)[源代码]#

每当鼠标离开屏幕上的窗口区域时调用一次。

如果当前正在拖动鼠标,则不会触发此事件。请注意,鼠标指针的坐标将位于窗口矩形之外。

参数:
  • x --

  • y --

on_mouse_motion(x: int, y: int, dx: int, dy: int)[源代码]#

当鼠标在窗口上移动时重复调用。

重写此函数以响应鼠标位置的更改。

参数:
  • x -- 窗口内鼠标的X位置,以像素为单位

  • y -- 窗口内鼠标的Y位置,以像素为单位

  • dx -- 自上次调用此方法以来x的变化

  • dy -- 自上次调用此方法以来y的更改

on_mouse_press(x: int, y: int, button: int, modifiers: int)[源代码]#

每当按下鼠标按钮时调用一次。

重写此函数以处理鼠标单击。有关如何执行此操作的示例,请参阅Arcade的内置 aiming and shooting bullets 演示。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • button -- 按下了什么按钮。这将始终是以下之一: * arcade.MOUSE_BUTTON_LEFT * arcade.MOUSE_BUTTON_RIGHT * arcade.MOUSE_BUTTON_MIDDLE

  • modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_mouse_release(x: int, y: int, button: int, modifiers: int)[源代码]#

每当释放鼠标按键时调用一次。

重写此函数以响应鼠标按键释放。当您想要使用鼠标单击的持续时间来影响游戏时,这可能很有用。

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • button -- 哪个按钮被按下了。其中之一:arcade.MOUSE_BUTTON_LEFT,arcade.MOUSE_BUTTON_RIGHT,arcade.MOUSE_BUTTON_MIDE.

  • modifiers -- 在此事件期间激活的所有修饰符(Shift、Ctrl、Num Lock)的按位‘and’。看见 修饰词

on_mouse_scroll(x: int, y: int, scroll_x: int, scroll_y: int)[源代码]#

在鼠标滚轮移动时重复调用。

重写此函数以响应滚动事件。滚动参数可以是正的,也可以是负的,以指示方向,但单位不是标准化的。根据系统设置和使用的输入设备(如鼠标滚轮、触摸板等),不同计算机收到的滚动步数可能会有很大差异。

警告

并不是所有的用户都可以轻松地滚动!

只有一些输入设备支持水平滚动。标准的垂直滚动很常见,但一些笔记本触摸板很难使用。

这意味着您应该注意如何使用滚动。考虑将其设置为可选选项,以最大限度地增加可以玩您游戏的人数!

参数:
  • x -- 鼠标的X位置

  • y -- 鼠标的Y位置

  • scroll_x -- 自上次调用此函数以来水平滚动的步数

  • scroll_y -- 自上次调用此函数以来垂直滚动的步数

on_resize(width: int, height: int)[源代码]#

重写此函数可添加自定义代码,以便在调整窗口大小时随时调用。此方法的主要职责是更新投影和视区。

如果在重写时不更改默认行为,请确保调用父级的 on_resize 第一名::

def on_resize(self, width: int, height: int):
    super().on_resize(width, height)
    # Add extra resize logic here
参数:
  • width -- 新宽度

  • height -- 新高度

on_update(delta_time: float)[源代码]#

把所有东西都搬开。执行冲突检查。在这里做所有的游戏逻辑。

参数:

delta_time -- 自上次调用函数以来的时间间隔。

run() None[源代码]#

运行主循环。在设置了窗口并且事件挂钩就位之后,这通常是主程序上最后的命令之一。这是一个阻塞函数,启动了pyglet的事件循环,这意味着它将开始分派事件,例如 on_drawon_update

set_caption(caption)[源代码]#

设置窗口的标题。

set_draw_rate(rate: float)[源代码]#

设置ON_DRAW函数的运行频率。例如,set.set_DRAW_RATE(1/60)会将绘制速率设置为每秒60帧。

set_exclusive_keyboard(exclusive=True)[源代码]#

捕获所有键盘输入。

set_exclusive_mouse(exclusive=True)[源代码]#

抓住这只老鼠。

set_fullscreen(fullscreen: bool = True, screen: Window | None = None, mode: ScreenMode | None = None, width: float | None = None, height: float | None = None)[源代码]#

设置我们是否全屏。

参数:
  • fullscreen --

  • screen -- 我们应该在哪个屏幕上显示?看见 get_screens()

  • mode -- 屏幕将切换到给定模式。该模式必须是通过枚举 Screen.get_modes 。如果没有,将从给定的模式中选择合适的模式 widthheight

  • width --

  • height --

set_location(x, y)[源代码]#

设置窗口的位置。

set_max_size(width: int, height: int)[源代码]#

包装Pyglet窗口调用以设置最大大小

参数:
  • width -- 以像素为单位的宽度。

  • height -- 以像素为单位的高度。

引发ValueError:

set_maximum_size(width, height)[源代码]#

设置最大窗口大小。

set_min_size(width: int, height: int)[源代码]#

包装Pyglet窗口调用以设置最小大小

参数:
  • width -- 以像素为单位的宽度。

  • height -- 以像素为单位的高度。

set_minimum_size(width: int, height: int)[源代码]#

设置最小窗口大小。

set_mouse_platform_visible(platform_visible=None)[源代码]#

警告

您可能正在寻找 set_mouse_visible() 好了!

实现此方法是为了防止PyCharm显示Linter警告。大多数用户永远不需要设置特定于平台的可见性,因为来自pyglet的默认设置通常会自动处理他们的需求。

有关这意味着什么的更多信息,请参阅 pyglet.window.Window.set_mouse_platform_visible()

set_mouse_visible(visible: bool = True)[源代码]#

设置是否在窗口上方显示系统光标

默认情况下,只要鼠标悬停在窗口上,系统鼠标光标就可见。要隐藏光标,请传递 False 这项功能。经过 True 以使光标再次可见。

当光标隐藏时,窗口将继续接收鼠标事件,包括移动和点击。这意味着像这样的功能 on_mouse_motion() 和t‘:meth:`~.Window.on_ouse_press`将继续正常工作。

您可以使用此行为以可视方式将系统鼠标光标替换为您想要的任何内容。一个例子是 a game character that is always at the most recent mouse position in the window

备注

高级用户可以尝试使用系统光标状态图标

可以使用表示光标交互状态的系统图标,例如沙漏或通过使用功能调整箭头大小 arcade.Window 继承自基础的Piglet窗口类。请参阅 pyglet overview on cursors 以获取更多信息。

参数:

visible -- 是否隐藏系统鼠标光标

set_size(width: int, height: int)[源代码]#

忽略可调整大小标志并设置大小

参数:
  • width --

  • height --

set_update_rate(rate: float)[源代码]#

设置On_UPDATE函数的调度频率。例如,self.set_update_rate(1/60)会将更新速率设置为每秒60次。

参数:

rate -- 更新频率(秒)

set_visible(visible: bool = True)[源代码]#

设置窗口是否可见。通常情况下,程序的窗口是可见的。

参数:

visible --

set_vsync(vsync: bool)[源代码]#

设置是否将我们的绘图同步到显示器的垂直同步速率。

show_view(new_view: View)[源代码]#

选择要在下一帧中显示的视图。这不是显示该视图的阻塞调用。在此调用之后,您的代码将继续运行,并且该视图将出现在 on_update/on_draw `

调用此函数与设置 arcade.Window.current_view 属性。

参数:

new_view -- 要显示的视图

switch_to()[源代码]#

切换此窗口。

test(frames: int = 10)[源代码]#

由单元测试用例使用。运行事件循环几次,然后停止。

参数:

frames --

use()[源代码]#

为渲染命令绑定窗口的帧缓冲区

background_color#

获取或设置此窗口的背景色。这会影响窗口在以下情况下将包含的颜色 clear() 被称为。

示例:

# Use Arcade's built in Color values
window.background_color = arcade.color.AMAZON

# Set the background color with a custom Color instance
MY_RED = arcade.types.Color(255, 0, 0)
window.background_color = MY_RED

# Set the background color directly from an RGBA tuple
window.background_color = 255, 0, 0, 255

# (Discouraged)
# Set the background color directly from an RGB tuple
# RGB tuples will assume 255 as the opacity / alpha value
window.background_color = 255, 0, 0
类型:

颜色

ctx#

此窗口的OpenGL上下文。

类型:

arcade.ArcadeContext

current_view#

此属性返回当前显示的视图。若要设置不同的视图,请调用 arcade.Window.show_view() 方法。

default_camera#

提供对默认街机摄影机的引用。自动将投影和视图设置为屏幕的大小。适用于重置屏幕。

headless#

如果这是一扇无头窗户

类型:

布尔尔

arcade.get_screens() List[源代码]#

返回屏幕列表。因此,对于双显示器设置,这应该返回两个屏幕的列表。可与arcade.Window配合使用,以选择在哪个窗口上全屏显示。

返回:

屏幕列表,每个显示器一个屏幕。

arcade.open_window(width: int, height: int, window_title: str | None = None, resizable: bool = False, antialiasing: bool = True) Window[源代码]#

此功能用于打开一个窗口。为了便于使用,我们假设只有一个窗口,程序员不需要保留该窗口的句柄。这不是最好的体系结构,因为窗口句柄存储在全局中,但如果程序员不必跟踪窗口指针,它会使事情变得更容易。

参数:
  • width -- 窗口的宽度。

  • height -- 窗的高度。

  • window_title -- 窗口的标题。

  • resizable -- 用户是否可以调整窗口大小。

  • antialiasing -- 要平滑图形吗?

返回:

窗口的句柄

arcade.close_window() None[源代码]#

关闭当前窗口,然后运行垃圾回收。为了防止在快速打开/关闭窗口时(通常是在单元测试期间)崩溃,垃圾收集是必要的。

arcade.exit() None[源代码]#

退出应用程序。

arcade.finish_render()[源代码]#

交换缓冲区并显示已绘制的内容。

警告

如果您要扩展 Window 类,则不应调用此函数。之后,事件循环将自动为您交换窗口帧缓冲区 on_draw

arcade.get_display_size(screen_id: int = 0) Tuple[int, int][源代码]#

返回监视器的宽度和高度。

默认情况下,返回主监视器的大小。

参数:

screen_id -- 屏幕编号

返回:

包含屏幕宽度和高度的元组

arcade.get_window() Window[源代码]#

返回当前窗口的句柄。

返回:

当前窗口的句柄。

arcade.run()[源代码]#

运行主循环。在设置了窗口并且事件挂钩就位之后,这通常是主程序上最后的命令之一。这是一个阻塞函数,启动了pyglet的事件循环,这意味着它将开始分派事件,例如 on_drawon_update

arcade.schedule(function_pointer: Callable, interval: float)[源代码]#

计划每隔一天自动调用一个函数 interval 几秒钟。函数/Callable需要接受类似如下的增量时间参数 on_update 。这是一个浮点数,表示自调度或调用以来的秒数。

一个函数可以多次调度,但不建议这样做。

警告

计划的功能应 always 未按计划使用 arcade.unschedule() 。具有挥之不去的预定函数将导致崩溃。

示例::

def some_action(delta_time):
    print(delta_time)

# Call the function every second
arcade.schedule(some_action, 1)
# Unschedule
参数:
  • function_pointer -- 指向要调用的函数的指针。

  • interval -- 调用函数的间隔(浮点型或整型)

arcade.schedule_once(function_pointer: Callable, delay: float)[源代码]#

安排一个函数在以下时间后自动调用 delay 几秒钟。函数/Callable需要接受类似如下的增量时间参数 on_update 。这是一个浮点数,表示自调度或调用以来的秒数。

示例::

def some_action(delta_time):
    print(delta_time)

# Call the function once after 1 second
arcade.schedule_one(some_action, 1)
参数:
  • function_pointer -- 指向要调用的函数的指针。

  • delay -- 以秒为单位的延迟

arcade.set_background_color(color: Tuple[int, int, int, int]) None[源代码]#

设置颜色 arcade.Window.clear() 将在清除窗口时使用。这只需要在背景颜色更改时调用。

备注

设置背景颜色的一种更短、更快的方法是使用 arcade.Window.background_color

示例:

# Use Arcade's built in color values
arcade.set_background_color(arcade.color.AMAZON)

# Specify RGB value directly (red)
arcade.set_background_color((255, 0, 0))
参数:

RGBA255 -- RGB/RGBA格式的3或4个值的列表。

arcade.set_window(window: 'Window' | None) None[源代码]#

设置当前窗口的句柄。

参数:

window -- 当前窗口的句柄。

arcade.start_render() None[源代码]#

清除窗口。

此功能更实用的替代方案是 arcade.Window.clear()arcade.View.clear()

arcade.unschedule(function_pointer: Callable)[源代码]#

取消计划正在自动调用的函数。

示例::

def some_action(delta_time):
    print(delta_time)

arcade.schedule(some_action, 1)
arcade.unschedule(some_action)
参数:

function_pointer -- 指向要取消调度的函数的指针。