精灵场景#

class arcade.Scene[源代码]#

基类:

商店 SpriteList 实例作为命名层,允许批量更新和绘制。

除了帮助您一次更新或绘制多个精灵列表外,该类还提供了以下方便的方法:

  • add_sprite() ,它按名称将精灵添加到层

  • Scene.from_tilemap() ,这将从一个 TileMap 已从切片数据加载

  • 用于添加、删除和重新排序精灵列表的细粒度便捷方法

  • 灵活但速度慢的通用便利方法

  • 灵活但缓慢的对 in & del Python关键字。

有关如何使用此类的另一个示例,请参见 第3步-多款雪碧和SpriteList

🧙 bool(self) bool[源代码]#

返回是否 _sprite_lists 包含任何内容

🧙 item: str | SpriteList in self bool[源代码]#

在以下情况下为真 item is in _ Sprite_lists`或为中的值 `_name_mapping

🧙 del self[sprite_list: int | str | SpriteList] None[源代码]#

按索引、名称或实例值从此场景中删除精灵列表。

小技巧

当速度很重要时,使用更具体的方法!

此方法使用 isinstance() ,这会减慢你的程序,如果经常使用!

请考虑以下替代方案:

参数:

sprite_list -- 索引、名称或 SpriteList 要从此场景中移除的实例。

🧙 self[key: str] SpriteList[源代码]#

按名称检索精灵列表。

这是为了便于使用,使直接编写Scene对象的子脚本以检索SpriteList成为可能。

参数:

key -- 要检索的精灵列表的名称

🧙 len(self) int[源代码]#

返回此场景中的精灵列表的数量。

add_sprite(name: str, sprite: Sprite) None[源代码]#

使用指定的名称将Sprite添加到SpriteList。

如果没有给定对象的SpriteList name ,将使用创建一个 SpriteList 的默认参数,并添加到场景当前绘制顺序的末尾(顶部)。

若要完全自定义SpriteList的选项,应直接创建SpriteList并使用以下选项之一将其添加到场景中:

参数:
  • name -- 要添加或创建的精灵列表的名称。

  • sprite -- 要添加的精灵。

add_sprite_list(name: str, use_spatial_hash: bool = False, sprite_list: SpriteList | None = None) None[源代码]#

将SpriteList添加到具有指定名称的场景。

这将添加一个新的SpriteList作为场景中其他层之上的层。

如果没有通过 sprite_list 参数,则将创建一个新参数,并且 use_spatial_hash 参数将被用于该创建。

参数:
  • name -- 为新层指定的名称。

  • use_spatial_hash -- 如果创建新的精灵列表,是否对其启用空间哈希。

  • sprite_list -- 使用特定的精灵列表,而不是创建新的列表。

add_sprite_list_after(name: str, after: str, use_spatial_hash: bool = False, sprite_list: SpriteList | None = None) None[源代码]#

在特定SpriteList之后使用指定名称将SpriteList添加到场景中。

如果没有通过 sprite_list 参数,则将创建一个新参数。除了价值之外 use_spatial_hash 传递给此方法,它将使用新的 SpriteList

添加的精灵列表将绘制在名为 after

参数:
  • name -- 要为层指定的名称。

  • after -- 要在其后放置新层的层的名称。

  • use_spatial_hash -- 如果创建新的精灵列表,则选择是否启用空间哈希。

  • sprite_list -- 如果通过此参数传递精灵列表,则将使用该列表,而不是创建新列表。

add_sprite_list_before(name: str, before: str, use_spatial_hash: bool = False, sprite_list: SpriteList | None = None) None[源代码]#

将具有指定名称的精灵列表添加到场景中的另一个SpriteList之前。

如果没有通过 sprite_list 参数,则将创建一个新参数。除了价值之外 use_spatial_hash 传递给此方法,它将使用新的 SpriteList

添加的精灵列表将绘制在名为 before

参数:
  • name -- 为新层指定的名称。

  • before -- 要在其前面放置新层的层的名称。

  • use_spatial_hash -- 如果创建新的精灵列表,则选择是否启用空间哈希。

  • sprite_list -- 如果通过此参数传递精灵列表,则将使用该列表,而不是创建新列表。

draw(names: Iterable[str] | None = None, filter: Tuple[int, int] | None = None, pixelated: bool = False, blend_function: Tuple[int, int] | Tuple[int, int, int, int] | None = None, **kwargs) None[源代码]#

打电话 draw() 在现场的精灵名单上。

默认情况下,此方法调用 draw() 以默认绘制顺序显示在场景中的每个精灵列表上。

属性限制和重新排序绘制调用。 names 参数,方法是传递场景中的名称列表。精灵列表将按照传递的迭代数的顺序绘制。如果某个名称不在场景中,则会出现 KeyError 将会被唤醒。

其他命名的关键字参数与的相同 SpriteList.draw() 。这个 **kwargs 选项适用于已划分子类的高级用户 SpriteList

参数:
  • names -- 绘制哪些层以及绘制它们的顺序。

  • filter -- 设置OpenGL滤镜的可选参数,如 gl.GL_NEAREST 以避免平滑。

  • pixelated -- True 对于像素艺术和 False 用于平滑缩放。

  • blend_function -- 在绘制精灵列表时使用指定的OpenGL混合函数,例如 arcade.Window.ctx.BLEND_ADDITIVEarcade.Window.ctx.BLEND_DEFAULT

draw_hit_boxes(color: Tuple[int, int, int, int] = (0, 0, 0, 255), line_thickness: float = 1.0, names: Iterable[str] | None = None) None[源代码]#

为场景层中的精灵绘制调试命中框轮廓。

如果 names 是场景中层名称的有效迭代数,则将按传递的迭代数的顺序为指定的层绘制命中框。

如果 names 则将按指定的顺序绘制每个层的命中框。

参数:
  • color -- 用于绘制点击框的RGBA颜色。

  • line_thickness -- 点击框轮廓应该有多少像素厚

  • names -- 哪些层&以什么顺序绘制他们的点击框。

classmethod from_tilemap(tilemap: TileMap) Scene[源代码]#

从一个场景创建新场景 TileMap 对象。

SpriteList将使用平铺文件中定义的层名称和顺序。

参数:

tilemap -- 这个 TileMap 要从中创建场景的对象。

get_sprite_list(name: str) SpriteList[源代码]#

按名称检索精灵列表。

还可以通过以下方式访问精灵列表:

  • scene_instance[name]

  • 直接访问 scene_instance._name_mapping ,尽管这会被短毛工人标记为不好的风格。

参数:

name -- 要检索的精灵列表的名称。

move_sprite_list_after(name: str, after: str) None[源代码]#

将场景中的命名SpriteList移动到场景中的另一个SpriteList之后。

A SceneKeyError 如果出现以下情况之一,则将引发 nameafter 包含当前不在场景中的名称。此异常可以作为 KeyError

参数:
  • name -- 要移动的SpriteList的名称。

  • after -- 要放置它的SpriteList的名称。

move_sprite_list_before(name: str, before: str) None[源代码]#

将场景中的命名SpriteList移动到场景中的另一个SpriteList之前。

A SceneKeyError 如果出现以下情况之一,则将引发 namebefore 包含当前不在场景中的名称。此异常可以作为 KeyError

参数:
  • name -- 要移动的SpriteList的名称。

  • before -- 要放置在其前面的SpriteList的名称。

on_update(delta_time: float = 0.016666666666666666, names: Iterable[str] | None = None) None[源代码]#

打电话 on_update() 在现场的精灵名单上。

默认情况下,此方法调用 on_update() 以默认绘制顺序显示在场景的精灵列表上。

属性限制和重新排序更新。 names 参数,方法是传递场景中的名称列表。精灵列表将按照传递的迭代数的顺序绘制。如果某个名称不在场景中,则会出现 KeyError 将会被唤醒。

参数:
  • delta_time -- 更新的时间步长,以秒为单位。

  • names -- 哪些层以及更新它们的顺序。

remove_sprite_list_by_index(index: int) None[源代码]#

按层在绘制顺序中的索引从场景中删除层。

参数:

index -- 要删除的精灵列表的索引。

remove_sprite_list_by_name(name: str) None[源代码]#

按其名称从场景中移除层。

A KeyError 如果SpriteList不在场景中,将引发。

参数:

name -- 要删除的精灵列表的名称。

remove_sprite_list_by_object(sprite_list: SpriteList) None[源代码]#

从场景中移除传递的SpriteList实例。

A ValueError 如果传递的精灵列表不在场景中,将引发。

参数:

sprite_list -- 要删除的精灵列表。

update(names: Iterable[str] | None = None) None[源代码]#

打电话 update() 在现场的精灵名单上。

默认情况下,此方法调用 update() 以默认绘制顺序显示在场景的精灵列表上。

属性限制和重新排序更新。 names 参数,方法是传递场景中的名称列表。精灵列表将按照传递的迭代数的顺序绘制。如果某个名称不在场景中,则会出现 KeyError 将会被唤醒。

参数:

names -- 哪些层以及更新它们的顺序。

update_animation(delta_time: float, names: Iterable[str] | None = None) None[源代码]#

打电话 update_animation() 在现场的精灵名单上。

默认情况下,此方法调用 update_animation() 以默认绘制顺序显示在场景中的每个精灵列表上。

属性限制和重新排序更新。 names 参数,方法是传递场景中的名称列表。精灵列表将按照传递的迭代数的顺序绘制。如果某个名称不在场景中,则会出现 KeyError 将会被唤醒。

参数:
  • delta_time -- 更新的时间步长,以秒为单位。

  • names -- 哪些层以及更新它们的顺序。

class arcade.SceneKeyError(name: str)[源代码]#

基类:KeyError

当py:class:`.Scene`找不到指定名称的层时引发。

它是的子类 KeyError ,如果您愿意,您可以像一个人一样处理它:

try:
    # this will raise a SceneKeyError
    scene_instance.add_sprite("missing_layer_name", arcade.SpriteSolidColor(10,10))

# We can handle it as a KeyError because it is a subclass of it
except KeyError as e:
    print("Your error handling should go here")

这个类的主要目的是帮助arcade的开发人员保持错误消息的一致性。

参数:

name -- 失踪者的名字 SpriteList