有限公司在线网站,深圳建设工程信息网查询系统,网站建设费怎么做分录,免费企业名称起名3.2.3 设置帧的宽度、高度、范围及列数
通过如图6所示的代码设置帧的宽度、高度、范围及列数。 图6 设置帧的宽度、高度、范围及列数的代码
其中#xff0c;frame_width、frame_height、rect和columns都是MySprite类的属性#xff0c;在其__init__()方法中定义#xff0c;…3.2.3 设置帧的宽度、高度、范围及列数
通过如图6所示的代码设置帧的宽度、高度、范围及列数。 图6 设置帧的宽度、高度、范围及列数的代码
其中frame_width、frame_height、rect和columns都是MySprite类的属性在其__init__()方法中定义分别表示帧的宽度、高度、范围及列数。
3.2.4 获取图片中最后一帧的编号
获取图片中最后一帧的编号的代码如图7所示。 图7 获取图片中最后一帧的编号的代码
其中第1行代码通过get_rect()方法获取整张图片的宽度和高度保存在rect变量中第2行代码通过rect.width//width获取整张图片中帧的列数rect.height//height获取整张图片中帧的行数两者的乘积减去1即为最后一帧的编号帧的编号从0开始。
注意1 图7代码中的rect与图6代码中的self.rect不是同一个变量。
注意2 帧的编号从0开始即第一帧的编号是0所以最后一帧的编号是帧总数减1。
3.3 子类的update()方法
MySprite类的update()方法作用是显示指定帧。
3.3.1 update()方法的格式
update()方法的格式如图8所示。 图8 update()方法的格式
其中参数current_time表示当前时间用于确定是否显示下一帧参数rate表示持续显示每一帧的时间默认值是30。
3.3.2 判断当前显示帧的编号
update()方法通过帧编号来确定当前显示哪一帧判断当前显示帧的编号的代码如图9所示。 图9 判断当前显示帧的编号的代码
其中last_time表示显示上一帧的时间current_time表示当前时间current_timeself.last_timerate表示上一帧图像已经持续显示了rate时间了此时该显示下一帧图像了frame表示显示的当前帧的编号
self.frame1表示显示下一帧图像第二个if语句判断当前显示帧的编号是否是最后一帧如果是最后一帧则要循环显示第一帧因此self.frameself.first_frame当显示新的一帧图像后上一帧图像的时间更新为当前时间。
注意3 代码中的last_time、frame、first_frame均为MySprite类的属性在其__init__()方法中定义。
3.3.3 显示指定帧图像
在确定了当前显示帧的编号后使用如图10所示的代码显示指定帧图像。 图10 显示指定帧图像的代码
其中第43行代码中的old_frame表示前一帧的编号如果当前要显示帧的编号不等于前一帧的编码表示此时要显示新的帧图像了第44-45行代码获取当前帧图像左上角的坐标frame_x和frame_y分别表示左上角的横纵坐标rect表示当前帧的范围如图11所示。 图11 frame_x、frame_y和rect的示意图 第47行代码通过subsurface()方法显示整张图片中的某一帧参数rect即为显示的范围最后第48行代码将old_frame即上一帧的编号更新为当前帧编码。