精灵场景#
- class arcade.Scene[源代码]#
基类:
商店
SpriteList
实例作为命名层,允许批量更新和绘制。除了帮助您一次更新或绘制多个精灵列表外,该类还提供了以下方便的方法:
add_sprite()
,它按名称将精灵添加到层Scene.from_tilemap()
,这将从一个TileMap
已从切片数据加载用于添加、删除和重新排序精灵列表的细粒度便捷方法
灵活但速度慢的通用便利方法
灵活但缓慢的对
in
&del
Python关键字。
有关如何使用此类的另一个示例,请参见 第3步-多款雪碧和SpriteList 。
- 🧙 item: str | SpriteList in self bool [源代码]#
在以下情况下为真 item is in _ Sprite_lists`或为中的值 `_name_mapping
- 🧙 del self[sprite_list: int | str | SpriteList] None [源代码]#
按索引、名称或实例值从此场景中删除精灵列表。
请考虑以下替代方案:
- 参数:
sprite_list -- 索引、名称或
SpriteList
要从此场景中移除的实例。
- 🧙 self[key: str] SpriteList [源代码]#
按名称检索精灵列表。
这是为了便于使用,使直接编写Scene对象的子脚本以检索SpriteList成为可能。
- 参数:
key -- 要检索的精灵列表的名称
- 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_ADDITIVE
或arcade.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
如果出现以下情况之一,则将引发name
或after
包含当前不在场景中的名称。此异常可以作为KeyError
。- 参数:
name -- 要移动的SpriteList的名称。
after -- 要放置它的SpriteList的名称。
- move_sprite_list_before(name: str, before: str) None [源代码]#
将场景中的命名SpriteList移动到场景中的另一个SpriteList之前。
A
SceneKeyError
如果出现以下情况之一,则将引发name
或before
包含当前不在场景中的名称。此异常可以作为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_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