CN113157366A - 动画播放方法、装置、电子设备和存储介质 - Google Patents

动画播放方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN113157366A
CN113157366A CN202110358401.4A CN202110358401A CN113157366A CN 113157366 A CN113157366 A CN 113157366A CN 202110358401 A CN202110358401 A CN 202110358401A CN 113157366 A CN113157366 A CN 113157366A
Authority
CN
China
Prior art keywords
animation
task
playing
session
independent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110358401.4A
Other languages
English (en)
Inventor
祝浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202110358401.4A priority Critical patent/CN113157366A/zh
Publication of CN113157366A publication Critical patent/CN113157366A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本公开关于动画播放方法、装置、电子设备和存储介质。所述方法包括:检测到动画触发事件,所述动画触发事件用于触发在当前页面中播放针对展示对象的动画;根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置;按照所述任务队列的出列顺序依次执行所述任务队列中的各个动画播放任务,以在所述当前页面中按照所述出列顺序先后播放分别对应于所述各个动画播放任务的动画。通过该方案,能够避免客户端所播放动画之间的时序冲突,后一动画不会打断前一动画的播放过程,有助于提升动画播放质量和用户体验。

Description

动画播放方法、装置、电子设备和存储介质
技术领域
本公开涉及动画播放领域,尤其涉及一种动画播放方法、装置、电子设备和存储介质。
背景技术
应用程序的客户端向用户展示页面中的对象时,通常会提供动画功能,即在对象的展示状态发生变化过程中,客户端播放与该对象相关的动画(即动态特效),以呈现出对象的动态变化效果。例如,对于具备即时通讯功能的应用程序,其会话列表页面中通常会显示出多个会话,在检测到用户操作删除某一会话,或者接收到服务端发送的数据而新增会话、更新会话展示位置等动画触发事件的情况下,会针对动画触发事件创建相应的动画播放任务,进而在话列表页面中展示相应的动画。
在相关技术中,客户端在创建针对任一动画的播放任务后,会立即执行该任务以控制播放相应动画。但是,若在前一动画播放任务尚未执行结束时即开始执行后一动画播放任务,则被播放的后一动画往往会打断正在播放的前一动画的播放过程,从而影响前一动画的完整播放效果,进而影响用户的观看体验。
发明内容
本公开提供了动画播放方法、装置、电子设备和存储介质,以至少解决相关技术中的技术问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提出一种动画播放方法,包括:
检测到动画触发事件,所述动画触发事件用于触发在当前页面中播放针对展示对象的动画;
根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置;
按照所述任务队列的出列顺序依次执行所述任务队列中的各个动画播放任务,以在所述当前页面中按照所述出列顺序先后播放分别对应于所述各个动画播放任务的动画。
可选的,所述检测到动画触发事件,包括:
接收到服务端发送的针对所述展示对象的数据更新消息;或者,
检测到用户在所述当前页面中针对所述展示对象实施的动画触发操作。
可选的,所述根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置,包括:
根据所述动画触发事件创建独立播放任务,并确定所述独立播放任务对应的动画类型;
在所述独立播放任务对应的动画类型与所述任务队列中的动画播放任务对应的动画类型不相同的情况下,将所述独立播放任务插入到所述任务队列的队尾,所述队尾为当前时刻所述出列顺序的最后一位。
可选的,执行所述独立播放任务,包括:
在所述当前页面中播放所述独立播放任务对应的动画。
可选的,还包括:
在创建所述独立播放任务的情况下,将所述独立播放任务对应的待更新数据保存在独立数组中。
可选的,还包括:
在执行所述独立播放任务的情况下,使用所述独立数组中的待更新数据,更新所述独立播放任务所对应展示对象的对象数据。
可选的,所述根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置,包括:
根据所述动画触发事件创建独立播放任务,并确定所述独立播放任务对应的动画类型;
在所述任务队列中存在与所述独立播放任务对应于同一动画类型的同类播放任务情况下,将所述独立播放任务与所述同类播放任务合并得到复合播放任务;
使用所述复合播放任务替换所述任务队列中的所述同类播放任务。
可选的,执行所述复合播放任务,包括:
在所述当前页面中同时播放所述复合播放任务对应的多个动画。
可选的,还包括:
在合并得到所述复合播放任务的情况下,将所述独立播放任务对应的独立数组与所述同类播放任务对应的任务数组拼接为复合数组,其中,所述独立数组中记录有所述独立播放任务对应的待更新数据,所述任务数组中记录有所述同类播放任务对应的待更新数据。
可选的,还包括:
在执行所述复合播放任务的情况下,使用所述复合数组中的各个待更新数据,分别更新所述复合播放任务所对应的各个展示对象的对象数据。
可选的,所述同类播放任务为独立播放任务或复合播放任务。
可选的,
所述任务队列在所述当前页面的生成阶段被创建;或者,
所述任务队列在所述当前页面所属应用程序的启动阶段被创建。
根据本公开实施例的第二方面,提出一种动画播放装置,包括:
检测单元,被配置为检测到动画触发事件,所述动画触发事件用于触发在当前页面中播放针对展示对象的动画;
创建单元,被配置为根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置;
播放单元,被配置为按照所述任务队列的出列顺序依次执行所述任务队列中的各个动画播放任务,以在所述当前页面中按照所述出列顺序先后播放分别对应于所述各个动画播放任务的动画。
可选的,所述检测单元还被配置为:
接收到服务端发送的针对所述展示对象的数据更新消息;或者,
检测到用户在所述当前页面中针对所述展示对象实施的动画触发操作。
可选的,所述创建单元还被配置为:
根据所述动画触发事件创建独立播放任务,并确定所述独立播放任务对应的动画类型;
在所述独立播放任务对应的动画类型与所述任务队列中的动画播放任务对应的动画类型不相同的情况下,将所述独立播放任务插入到所述任务队列的队尾,所述队尾为当前时刻所述出列顺序的最后一位。
可选的,所述播放单元还被配置为:
在所述当前页面中播放所述独立播放任务对应的动画。
可选的,还包括:
独立保存单元,被配置为在创建所述独立播放任务的情况下,将所述独立播放任务对应的待更新数据保存在独立数组中。
可选的,还包括:
独立更新单元,被配置为在执行所述独立播放任务的情况下,使用所述独立数组中的待更新数据,更新所述独立播放任务所对应展示对象的对象数据。
可选的,所述创建单元还被配置为:
根据所述动画触发事件创建独立播放任务,并确定所述独立播放任务对应的动画类型;
在所述任务队列中存在与所述独立播放任务对应于同一动画类型的同类播放任务情况下,将所述独立播放任务与所述同类播放任务合并得到复合播放任务;
使用所述复合播放任务替换所述任务队列中的所述同类播放任务。
可选的,所述播放单元还被配置为:
在所述当前页面中同时播放所述复合播放任务对应的多个动画。
可选的,还包括:
数组拼接单元,被配置为在合并得到所述复合播放任务的情况下,将所述独立播放任务对应的独立数组与所述同类播放任务对应的任务数组拼接为复合数组,其中,所述独立数组中记录有所述独立播放任务对应的待更新数据,所述任务数组中记录有所述同类播放任务对应的待更新数据。
可选的,还包括:
复合更新单元,被配置为在执行所述复合播放任务的情况下,使用所述复合数组中的各个待更新数据,分别更新所述复合播放任务所对应的各个展示对象的对象数据。
可选的,所述同类播放任务为独立播放任务或复合播放任务。
可选的,
所述任务队列在所述当前页面的生成阶段被创建;或者,
所述任务队列在所述当前页面所属应用程序的启动阶段被创建。
根据本公开实施例的第三方面,提出一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述第一方面中任一实施例所述的动画播放方法。
根据本公开实施例的第四方面,提出一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述第一方面中任一实施例所述的动画播放方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序和/或指令,所述计算机程序和/或指令被处理器执行时实现上述第一方面中任一实施例所述的动画播放方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
根据本公开的实施例,在创建对应于动画触发事件的动画播放任务后,会按照任务类型将任务插入到当前页面所对应任务队列中的相应位置,进而按照任务队列自身固有的出列顺序依次执行各个动画播放任务,从而在当前页面中按照该展示顺序先后展示相应的各个动画。可见在该方案中,前一动画播放结束后才会展示后一动画,从而能够避免后一动画打断前一动画的播放过程,呈现出依次有序播放各个动画的播放效果,有效提升了动画的动态播放效果,进而有助于提升用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本公开的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是一示例性实施例提供的一种会话列表页面示意图;
图2是一示例性实施例提供的一种动画播放系统的架构示意图;
图3是根据本公开的实施例示出的一种动画播放方法的流程图;
图4是根据本公开的实施例示出的另一种动画播放方法的流程图;
图5是根据本公开的实施例示出的一种任务队列示意图;
图6是根据本公开的实施例示出的一种会话列表页面中的动画效果示意图;
图7是根据本公开的实施例示出的另一种任务队列示意图;
图8是根据本公开的实施例示出的另一种会话列表页面中的动画效果示意图;
图9是根据本公开的实施例示出的一种动画播放装置的示意框图;
图10是根据本公开的实施例示出的一种电子设备的结构图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
应用程序的客户端向用户展示页面中的对象时,通常会提供动画功能,即在对象的展示状态发生变化过程中,客户端播放与该对象相关的动画(即动态特效),以呈现出对象的动态变化效果。例如,对于具备即时通讯功能的应用程序,其会话列表页面中通常会显示出多个会话,在检测到用户操作删除某一会话,或者接收到服务端发送的数据而新增会话、更新会话展示位置等动画触发事件的情况下,会针对动画触发事件创建相应的动画播放任务,进而在话列表页面中播放相应的动画。
如图1所示,客户端中运行有具备即时通讯功能的应用程序,在该应用程序的会话列表页面中,展示有4条会话:会话A、会话B、会话C和会话D。任一会话中包含会话名称101(如会话名称“A”)、最新会话消息102(如会话B的最后一条消息:小白发送的“我知道了,多谢~”)、最后一条会话消息的发送或接收时刻103(如会话A中客户端——实际为客户端所登录的用户账号——发送最后一条会话消息的时刻“刚刚”),还可能包括未读消息数量104(如会话B中的“2”)。其中,上述各个会话按照会话中最后一条会话消息所对应发送时刻或接收时刻的先后顺序依次展示:某一会话中最后一条消息所对应的时刻越晚,则该会话被展示的越靠上;反之,某一会话中最后一条消息所对应的时刻越早,则该会话被展示的越靠下。另外,本公开所涉及的任一会话的“最后一条会话消息”为客户端在该会话中发送或接收到的距离当前时刻最近的一条会话消息,特此说明。
此时,若用户在该页面中针对会话C执行譬如左划、长按并点击“删除”等删除操作,则客户端可以响应于该操作创建删除任务,并执行该任务以删除会话C,而为了使得删除过程中呈现出的展示效果较为平滑、逼真,客户端会在删除会话C时在会话C的展示位置处播放相应的动画(下称删除动画)。或者,客户端接收到服务端发送的新会话E 的首条会话消息后,可以响应于该消息创建会话插入任务,从而在执行该任务时在会话D 的下方展示一条新的会话“会话E”,并在展示过程中播放相应的动画(下称插入动画),从而形成在该会话列表中插入会话E的效果,使会话E从无到有的动态过程更加逼真、美观。
在相关技术中,客户端在创建针对任一动画的播放任务后,会立即执行该任务以控制播放相应动画。以上述删除和插入动画为例,假设客户端播放的删除动画时长为0.5s,则在播放该动画的过程中(即在播放开始后的0.5s中),若客户端接收到服务端发送的针对新会话E的首条会话消息,则会在创建插入任务后立即执行该任务,使得在删除动画尚未播放结束的情况下即开始播放插入动画,从而后播放的插入动画会打断正在播放的删除动画,导致删除动画无法完整播放,从而用户实施的删除操作所对应动画的展示过程被迫中断,形成断续的动画播放效果,严重影响用户的观看体验。
可见,正是因为不对动画播放任务进行时序控制,创建动画播放任务后即执行该任务,相关技术才会存在上述问题。为解决该问题,本公开的提出一种动画播放方法,将动画播放任务插入到当前页面对应的任务队列中,利用任务队列所具有的“先进先出(FirstIn First Out、FIFO)”固有特性实现对各个任务队列的依次有序执行,从而保证各个动画被按照任务创建的先后顺序依次执行,有效避免相邻动画中后一动画打断前一动画播放进程的情况出现。
图2是一示例性实施例提供的一种动画播放系统的架构示意图。如图2所示,该系统可以包括网络20、服务器21、若干电子设备,比如手机22、手机23和手机24等。
服务器21可以为包含一独立主机的物理服务器,或者该服务器21可以为主机集群承载的虚拟服务器。在运行过程中,服务器21可以运行某一应用的服务器侧的程序,以实现该应用的相关业务功能,比如当该服务器21运行具备对象展示功能的应用程序时,可以实现为该应用程序对应的服务端。而在本公开一个或多个实施例的技术方案中,可由服务器21通过与手机22-24上运行的客户端进行配合,以实现对象展示过程中的动画播放方案。
在本实施例中,具备对象展示功能的应用程序不仅可以实现对象展示和动画播放功能,还可以作为诸多其他功能的集成化功能平台,比如对于展示页面的生成、任务队列的创建、动画触发事件的检测、播放任务的创建及合并、待更新数据的确定、动画类型的确定、任务数据的更新等,本公开一个或多个实施例并不对此进行限制。
手机22-24只是用户可以使用的一种类型的电子设备。实际上,用户显然还可以使用诸如下述类型的电子设备:平板设备、笔记本电脑、掌上电脑(PDAs,Personal DigitalAssistants)、可穿戴设备(如智能眼镜、智能手表等)等,本公开一个或多个实施例并不对此进行限制。在运行过程中,该电子设备可以运行某一应用的客户端侧的程序,以实现该应用的相关业务功能,比如当该电子设备运行具备对象展示功能的应用程序时,可以实现为该应用程序的客户端,例如手机22可以实现为直播客户端,手机23和手机24可以实现观众客户端,上述各个客户端均具备对象展示和动画播放功能。
需要指出的是:上述客户端的应用程序可以被预先安装在电子设备上,使得该客户端可以在该电子设备上被启动并运行;当然,当采用诸如HTML5技术的在线“客户端”时,无需在电子设备上安装相应的应用程序,即可获得并运行该客户端。
而对于网络20,可以包括多种类型的有线或无线网络。
图3是本公开一示例性实施例示出的一种动画播放方法的流程图。如图3所示,该方法应用于客户端,可以包括以下步骤:
步骤302,检测到动画触发事件,所述动画触发事件用于触发在当前页面中播放针对展示对象的动画。
在本实施例中,终端设备中可以运行有具备对象展示功能和动画播放功能的应用程序的客户端,该客户端可以生成并显示多种展示页面,其中,客户端在当前时刻显示出的展示页面即为所述的当前页面。
在本实施例中,客户端可以通过多种方式创建当前页面对应的任务队列,以便后续步骤使用。作为一示例性实施例,客户端可以在当前页面的生成阶段,创建针对当前页面的任务队列。相应的,在当前页面被关闭时,客户端可以相应的删除该任务队列,以便回收被该任务队列占用的内存空间等资源,可见,当前页面对应的任务队列与该页面具有相同的生命周期。实际上,对于客户端所显示的任一展示页面,可能包含图片、会话、文字等对应于动画的展示对象。当然,客户端在任一时刻所展示的当前页面也可以并不包含对应于动画的展示对象,例如应用程序的默认启动页面等,本公开实施例对此并不进行限制。但需要说明的是,本公开实施例所述的动画播放方法仅应用于包含上述展示对象的页面中,因此客户端可以在生成任一页面之前或生成任一页面的过程中,根据该页面的页面数据确定该页面中是否包含上述展示对象:在确定包含的情况下,进一步创建对应于该展示页面的任务队列;否则,在不包含的情况下,则终止创建任务队列。因为对于不包含上述任务对象的展示页面,不会检测到动画触发事件(或者即便检测到动画触发事件也不会播放相应的动画),因此在创建任务队列之前预先进行判断,有效避免了任务队列的无效创建,不仅节省了相关资源,而且有助于提升展示页面的显示效率。
作为另一示例性实施例,因为客户端的应用程序在运行期间通常会连续展示多个展示页面(即在不同展示页面之间切换),所以为避免随着展示页面切换时而频繁创建和销毁任务队列导致的重复处理,也可以在该应用程序的启动阶段即创建针对该应用程序的任务队列。该队列用于保存应用程序客户端所显示的全部展示页面中产生的动画播放任务,在任一展示页面处于显示状态时,向该任务队列中插入和执行该展示页面中产的动画播放任务,并在该展示页面被关闭时清空任务队列。可见,此时客户端所显示的全部展示页面“分时复用”该任务队列,一定程度上提升了针对任务队列的管理效率。
在显示当前页面的过程中,客户端可能检测到动画触发事件,该事件用于触发客户端在当前页面中播放针对展示对象的动画。其中,上述动画触发事件可以来自服务端或者用户。例如,客户端可以在接收到服务端发送的针对展示对象的数据更新消息的情况下,确定检测到动画触发事件。其中,上述数据更新消息可以包括数据新增消息和/或数据删除消息,其中,数据新增消息可以用于指示客户端在当前页面中新增针对展示对象的数据,数据删除消息可以用于指示客户端在当前页面中删除展示对象的已有数据。通过上述数据更新消息,客户端能够在当前页面中相应的播放对应于服务端数据更新的动画,从而实现对客户端展示内容的及时更新。
又例如,上述客户端也可以在检测到用户在当前页面中针对展示对象实施的动画触发操作的情况下,确定检测到动画触发事件。其中,上述动画触发操作可以为用户针对展示对象已有数据实施的删除操作,或者也可以为针对展示对象实施的移动操作等。上述任一操作可以为单击、双击、左划、双指滑动等形式,本公开实施例对于用户实施的动画触发操作的具体形式并不进行限制。客户端响应于上述动画触发操作,有助于在当前页面中显示出响应用户操作的动画,提升动画播放的互动效果,进而有助于提升用户的操作体验。
步骤304,根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置。
步骤306,按照所述任务队列的出列顺序依次执行所述任务队列中的各个动画播放任务,以在所述当前页面中按照所述出列顺序先后播放分别对应于所述各个动画播放任务的动画。
在本实施例中,客户端在检测到前述动画触发事件后,根据动画触发事件创建动画播放任务并将其插入到已经创建的前述任务队列中。其中,在显示当前页面的过程中,客户端检测到动画触发事件的时刻是随机的,因此客户端可以针对检测到的任一动画触发事件都创建动画播放任务并插入任务队列。另外需要说明的是,“生成并将动画播放任务插入任务队列”与“依次执行任务队列中的各个动画播放任务”可以异步进行,即可以在执行任务队列中位于队头的动画播放任务的同时,生成新的动画播放任务并将该任务插入任务队列的队尾。而且,本实施例中提及的“依次播放各个动画”,应当被理解为按照时间的先后顺序依次播放任务队列中各个动画播放任务分别对应的动画;亦即,任务队列中距离队头(即出列顺序的第一位)越近的动画播放任务,对应的动画在时间上被越早播放,从而动画的播放顺序对应于动画播放任务在队列中的排列顺序,该顺序即为任务队列自身 FIFO特性所决定的出列顺序。而且,对于相邻的两个动画,前一动画被播放结束后才开始播放后一动画,即两动画的播放时间区间不存在交集。
另外,客户端依次执行任务队列中的各个动画播放任务的过程,即为依次取出任务队列的队头位置处的动画播放任务并执行的过程,从而基于队列的FIFO机制,保证从队头依次取出任务队列中的各个动画播放任务。
客户端可以通过多种方式创建不同类型的动画播放任务,进而可以根据任务类型将创建的动画播放任务分别插入到任务队列中的相应位置。其中,根据生成任务的方式不同,本公开实施例所涉及的任务类型分为独立播放任务和复合播放任务:独立播放任务被根据一个动画触发事件创建得到,而复合播放任务被根据多个独立播放任务合并得到(可认为被根据多个动画触发事件创建得到)。
在一实施例中,客户端可以根据检测到的动画触发事件创建独立播放任务,然后将该独立播放任务插入到任务队列的队尾,其中,上述“队尾”为当前时刻上述出列顺序的最后一位。可以理解的是,由于任务队列中被插入的动画播放任务会被取出以执行,所以任务队列中的任务数量并非固定;又因为任务队列的出列顺序是确定的,所以任一时刻任务队列中被插入的最后一个动画播放任务所处的位置也不固定,进而任务队列的队尾所处的位置也是变化的。在上述插入方式下,不同时刻(根据动画触发事件)产生的动画播放任务都被(按照时间顺序)插入到任务队列的队尾,并且队列中的各个动画播放任务会被按照队列的出列顺序依次出列并执行,所以客户端能够按照发生动画触发事件的时间顺序依次执行各个相应的动画播放任务,进而依次播放各个相应的动画。可见,各个动画播放任务所对应动画的播放顺序,与各个动画触发事件的发生顺序相同,从而保证按照动画触发事件的发生顺序依次播放各个动画,向用户呈现出响应于事件有序播放动画的效果,避免了动画播放时序的混乱。
其中,任一独立播放任务对应的动画类型,可以存在多种可能。例如,动画类型可以为新建,如在图1中,可以在会话D下方新建的会话E,此时需要播放的动画即为在会话D下方插入会话E的过程中,会话E的对应的动态特效。动画类型也可以为选中,例如在检测到用户选中图像展示页面中被展示的至少一个图像的情况下,此时需要播放的动画即为图像被选中前后的动态展示效果。动画类型还可以为移动,如在图1中,可以在接收到服务端发送的会话C的最新会话消息的情况下,将会话C的展示位置上移,从而将会话C展示在会话A上方,此时需要播放的动画即为会话C的移动过程中对应的动态移动效果。动画类型还可以为删除,如在图1中,在检测到用户针对会话B实施的删除操作的情况下,可以将会话B从会话列表中删除,此时需要播放的动画即为会话B在被删除前后的动态展示效果。当然,在方案实践中,上述任一独立播放任务所对应的(需要播放的)动画的动画类型还可以为其他类型,本公开实施例并不对此进行限制。通过上述多种动画类型,客户端能够在当前页面中向用户呈现出多种形式的动态效果,增强当前页面的展示对象在变化过程中的展示效果,提升页面感观。
进一步的,客户端可以在创建上述独立播放任务的情况下,确定被创建的独立播放任务对应的待更新数据,并将该待更新数据保存在独立数组中。其中,上述待更新数据即为动画触发事件对应的需要进行更新的数据。例如,在接收到服务端发送的数据新增消息的情况下,客户端可以将该数据新增消息所指示的新增数据,确定为根据该数据新增消息创建的独立播放任务所对应的待更新数据。或者,在接收到服务端发送的数据删除消息的情况下,客户端可以将该数据删除消息所指示的(待删除的)已有数据,确定为根据该数据删除消息创建的独立播放任务所对应的待更新数据。又或者,在检测到用户在当前页面中针对存在已有数据的展示对象实施的删除操作情况下,客户端可以将该已有数据确定为根据该删除操作创建的独立播放任务所对应的待更新数据。再或者,任一独立播放任务也可以不存在对应的待更新数据,例如用户针对当前页面中的某一图片实施的拖动操作,则只是控制控制改变该图片的展示位置,因此客户端可以相应的展示该拖动操作对应的移动动画,而并不需要更新该图片对应的数据。
更进一步的,客户端在执行独立播放任务时,可以进行相应的数据更新过程。例如,在执行某一独立播放任务的情况下,客户端可以使用该独立播放任务对应的独立数组中的待更新数据,更新该独立播放任务所对应展示对象的对象数据,从而实现对动画所对应的展示对象的数据的更新,以保证展示内容与对象数据的一致性。
但是采用上述实施例,在短时间内检测到多个同类型动画触发事件的情况下,客户端会按照检测到各个事件的先后顺序依次播放效果相同的多个动画。从而,因为任务数量较多,客户端需要频繁调用动画播放功能播放相同效果的多个动画,使得动画播放过程冗长,从而导致终端设备的负载较大、耗电较多。而且,因为越靠近队尾的动画播放任务对应的动画被播放的时刻越晚,所以在动画播放任务的数量较多(即需要播放的动画较多)的情况下,会导致队尾附近的动画播放任务对应的动画播放延迟较大,如在用户实施动画触发操作较长时间后,当前页面中才播放该操作对应的动画,从而可能呈现出客户端卡顿的效果,不利于用户体验。
为进一步解决上述问题,客户端可以按照动画类型对生成的独立播放任务进行合并处理。例如,客户端可以根据检测到的动画触发事件创建动画播放任务,并确定该动画播放任务对应的动画类型,然后判断独立播放任务对应的动画类型与任务队列中(已经插入的) 各个动画播放任务分别对应的动画类型是否相同,并根据判断结果分别进行相应的处理:在独立播放任务对应的动画类型与任务队列中的各个动画播放任务分别对应的动画类型均不相同的情况下,客户端可以将上述独立播放任务直接插入到任务队列的队尾;否则,在独立播放任务对应的动画类型与任务队列中的同类动画播放任务对应的动画类型相同的情况下,客户端可以将上述独立播放任务与同类播放任务合并得到复合播放任务,并使用得到的复合播放任务替换任务队列中的同类播放任务(即将复合播放任务插入到任务队列中的同类播放任务所在的位置处)。其中,上述同类播放任务可以存在至少一个:在仅存在一个同类播放任务的情况下,上述符合播放任务由独立播放任务与该同类播放任务合并得到,此时客户端可以使用该复合播放任务替换任务队列中的该同类播放任务;而在存在多个同类播放任务(多个同类播放任务与上述独立播放任务均对应于相同的动画类型) 的情况下,上述复合播放任务由独立播放任务与上述多个同类播放任务合并得到,此时客户端可以使用该复合播放任务替换上述多个同类播放任务中的任意一个任务,如可以替换其中位于出列顺序最前面的任务(即最靠近队头的任务)。在上述任务合并及插入方式下,能够将对应于相同动画类型(即对应于相同类型的动态特效)的多个动画播放任务合并为一个复合播放任务,并使用该复合播放任务替换任务队列中原有的同类播放任务,从而在保证相邻动画播放过程无冲突的基础上,大大减少了任务队列中的任务数量(任务数量不会超出动画类型的数量),从而减少了客户端需要维护及执行的任务数量,并简化了动画播放任务的播放流程,有助于提升动画播放效率。
与前述独立播放任务的数据更新相对应的,在将上述独立播放任务与特定播放任务进行合并得到复合播放任务的情况下,客户端可以将该独立播放任务对应的上述独立数组与同类播放任务对应的任务数据拼接为复合数据,而上述同类播放任务对应的任务数组中记录有同类播放任务对应的待更新数据。通过上述数组拼接得到的复合数组中,同时记录有独立播放任务和同类播放任务分别对应的(即为多个独立播放任务分别对应的)待更新数据,进而客户端可以将上述各个独立播放任务分别对应的待更新数据集中管理,有助于提升动画对应的数据更新效率。
通过上述方式处理后的任务队列中可能同时存在独立播放任务和复合播放任务,因此对于从队头取出的动画播放任务,客户端可以判断该任务是独立播放任务还是复合播放任务,进而可以根据判断结果进行相应的播放处理。例如,对于某一动画播放任务,在该任务为独立播放任务的情况下,客户端可以在当前页面中播放该独立播放任务对应的动画;而在该任务为复合播放任务的情况下,客户端可以在当前页面中同时播放该复合播放任务对应的多个动画。通过该方式,对于独立播放任务和同类播放任务合并得到的复合播放任务,客户端可以在执行该复合播放任务时,同时播放上述独立播放任务和同类播放任务对应的多个同类型动画,从而使这些动画能够被客户端同时播放。因为同类型动画的播放时长通常都相同,所以该方案能够在一个动画播放时长内同时播放多个同类型动画,大大减少了动画播放耗时,提升了动画播放效率,减少了队尾任务所对应动画的播放延迟,显著提升了用户的动画观看体验。
对应于前述的复合数据,在执行某一复合播放任务的情况下,客户端可以使用该复合播放任务对应的复合数组中的各个待更新数据,分别更新该复合播放任务所对应的各个展示对象的对象数据。通过该方式,客户端能够在执行复合播放任务时,同时实现对多个待更新数据的集中更新,提升数据更新的效率。
另外需要说明的是,与独立播放任务进行合并的同类播放任务,既可以为独立播放任务,也可以为复合播放任务。换言之,同类型的两个独立播放任务可以合并为一个复合播放任务,而同类型的独立播放任务也可以与同类型的复合播放任务(该复合播放任务由多个同类型的独立播放任务合并得到)进行合并得到新的复合播放任务,从而实现多个独立播放任务合并为一个复合播放任务的合并效果。可以理解的是,因为用于合并任一复合播放任务的多个独立播放任务对应于相同的动画类型,所以可以将该动画类型作为合并得到的复合播放任务所对应的动画类型。
根据本公开的实施例,在创建对应于动画触发事件的动画播放任务后,会将任务插入到当前页面对应的任务队列中,进而按照任务队列自身固有的出列顺序依次执行各个动画播放任务,从而在当前页面中按照该出列顺序先后播放各个动画。从而对于先后发生的各个动画触发事件,分别对应的各个动画播放任务能够被依次有序执行,进而各个动画被先后播放——前一动画播放结束后才会播放后一动画,避免出现后一动画打断前一动画的情况,呈现出依次有序播放各个动画的动态播放效果,有效提升了动画的动态播放效果,进而提升了用户体验。
图4是本公开一示例性实施例示出的另一种动画播放方法的流程图,如图4所示,该方法应用于客户端。下面以图1所示的会话列表页面为例,结合图4对本公开实施例所述方法对应的动画播放过程进行详细说明,该过程可以包括下述步骤402-426。
步骤402,生成并显示当前页面。
在本实施例中,以运行在终端设备中的直播平台的客户端为例,该客户端具备即时通讯功能、会话展示功能和动画播放功能。在用户操作终端设备控制客户端展示会话列表后,客户端依次经过获取页面数据、渲染页面元素、展示页面元素等过程最终显示出如图1 所示的会话列表页面(即当前页面),该页面的具体显示过程可以参见相关技术中的记载,此处不再赘述。
如图1所示的当前页面中包含4个展示对象:会话A、会话B、会话C和会话D,下述步骤即针对各个展示对象在内容或位置变动过程中的动画播放过程进行说明。
步骤404,创建对应于当前页面的任务队列。
在当前页面的生成阶段,客户端可以创建针对该页面的任务队列,以用于在后续步骤中按序保存客户端生成的各个动画播放任务。相应的,在当前页面被关闭时,客户端可以相应的删除该任务队列,以便回收被该任务队列占用的内存空间等资源,可见,当前页面对应的任务队列与该页面具有相同的生命周期。
实际上,在显示上述当前页面之前,客户端并不知晓该页面中是否包含可触发播放动画的展示对象(如上述各个会话,下称可触发对象)。可以理解的是,在展示页面中不包含可触发对象的情况下,即便创建任务队列,该任务队列也无用。所以为了避免为不包含可触发对象的展示页面创建任务队列,客户端可以在创建任务队列之前根据页面数据先进行判断:在确定待生成的页面中包含可触发对象的情况下,再进一步创建针对该页面的任务队列,以减少对任务队列的无效创建。
例如,客户端中可以预先记录可触发对象的格式、类型、参数等对象特性,以通过该对象特征对待生成页面中各个展示对象是否为可触发对象进行判断:若待生成页面的页面数据对应的各个展示对象中存在至少一个展示对象的对象特征,与已经记录的可触发对象的对象特性相匹配,则判断该待生成页面中包含可触发对象;否则,若待生成页面的页面数据对应的全部展示对象的对象特征,均与已经记录的可触发对象的对象特性不匹配,则判断该待生成页面中不包含可触发对象。其中,上述判断过程可以在待生成页面被展示前,例如可以从该页面的DOM(Document Object Model,文档对象模型)树中获取待生成页面中包含的全部展示对象,不再赘述。
当然,对于图1所示的会话展示页面,因为其中各个会话的位置变动均可能触发客户端在该页面中播放相应的动画,所以该会话展示页面符合上述条件,因此客户端可以生成针对该会话展示页面的任务队列。当然,还可以在终端设备中启动上述直播平台的客户端时,由客户端生成自身对应的任务队列,具体过程可以参见前述记载。
步骤406,检测针对展示对象的动画触发事件。
在显示当前页面的过程中,客户端可能检测到动画触发事件,该事件用于触发客户端在当前页面中播放针对展示对象的动画。以图1所示的会话展示页面为例,如前所述,因为会话的展示位置与会话中最新会话消息的发送或接收时刻有关,所以客户端在接收到服务端发送的消息或者检测到用户操作后,可以相应的展示调整会话的展示位置,并在调整过程中播放相应类型的动画,以呈现出位置变动过程中的动态效果。
例如,在登录有用户账号的客户端首次接收到其他用户发送的会话消息,或者当前用户在会话展示页面中删除了与上述其他用户的历史会话后,再次接收到上述其他用户向当前用户发送的会话消息时,服务端会将该会话消息发送至客户端,从而客户端可以在会话展示页面中创建并展示该会话消息对应的新会话。如客户端在接收到服务端发送的两条新消息时,可以相应的创建并展示两条新会话:会话E和会话F,并在已有会话列表中插入展示该会话过程中相应的播放插入动画。或者,若接收到上述两条会话消息时,会话展示页面中已经展示与该其他用户的会话(如该用户已经向当前用户发送过历史消息),则客户端可以在两条会话中分别展示接收到的两条会话消息,并将两条会话的展示位置调整至会话列表的最上方。如客户端在接收到服务端发送的两条新消息时,可以相应的移动两条新会话:会话C和会话D的展示位置,并在移动过程中相应的播放移动动画。又或者,在用户针对会话B实施删除操作时,客户端可以删除会话列表中的会话B,并在删除过程中相应的播放删除动画。
当然,上述插入新会话、移动已有会话和删除已有会话的过程中所播放的动画,会在后续步骤422中才进行播放,本步骤并不播放。实际上,正是在播放上述动画的过程中,才在会话列表页面中呈现出插入会话、移动会话和删除会话的动态效果,从而才可被用户感知到相应的动画触发事件。
步骤408,根据动画触发事件创建独立播放任务,并将相应的待更新数据保存在独立数组中。
步骤140,确定独立播放任务对应的动画类型。
承接于上述实施例,客户端可以相应的生成针对各个播放触发事件独立播放任务。例如,生成针对会话E和会话F的插入播放任务、生成针对会话C和会话D的移动播放任务、生成针对会话B的删除播放任务。同时,还可以确定各个任务对应的待更新数据,如对应于会话E、会话F、会话C和会话D的最新消息数据,对应于会话B的全部会话消息数据(即会话B中发布的全部会话消息的消息数据均将被从会话B的会话窗口中删除),进而可以将上述待更新数据保存在动画播放任务对应的独立数组中。其中,会话E、会话F、会话C和会话D的最新消息数据可以直接保存在独立数组中,而对于会话B的全部会话消息数据,为避免重复写入,可以仅在独立数组中记录对应于“全部删除”这一操作的预设标记。
相应的,上述针对会话E和会话F的插入播放任务分别对应于插入会话E的动画和插入会话F的动画,因此二者对应的动画类型为插入。上述针对会话C和会话D的移动播放任务分别对应于移动会话C的动画和移动会话D的动画,因此二者对应的动画类型为移动。上述针对会话B的删除播放任务对应于删除会话B的动画,因此其对应的动画类型为删除。
此处需要说明的是,步骤406-416是针对任一动画触发事件的操作流程,即对于检测到的任一动画触发事件,客户端会依次执行步骤406-416。当然,客户端也可以同时执行多个动画触发事件对应的步骤406-416。
在下述实施例中,假设客户端依次接收到针对会话E的新消息、接收到针对会话D的新消息、接收到针对会话F的新消息、检测到针对会话B的删除动作和接收到针对会话C的新消息;相应的,客户端可以依次生成针对会话E的插入播放任务、针对会话D 的移动播放任务、针对会话F的插入播放任务、针对会话B的删除播放任务和针对会话 C的移动播放任务。
Figure BDA0003004509470000171
表1
具体可参见表1,由表1中的“时刻”一列可见,针对各个会话的动画触发事件按照时间的先后顺序依次发生。以任务队列中存在针对会话E、会话D、会话B和会话C的独立播放任务的情况下,客户端将针对会话B的独立播放任务插入任务队列为例,可参见图5。如图5(a)所示,任务队列中当前已经依次保存有4个独立播放任务:对应于插入动画的insert1、对应于移动动画的move1、对应于插入动画的insert2、对应于删除动画的delete1,其中队头为insert1,队尾为delete1。
在一实施例中,此时可以直接转入步骤416,即将针对会话B的独立播放任务move2插入任务队列的队尾。插入后的任务队列如图5(b)所示,其中,插入后的move2作为新的队尾。实际上,因为该过实施例并不需要使用动画类型,所以可以不执行步骤410,换言之,可以将步骤402-408和步骤416-426作为一个完整的实施例。
此时,可以将图1所示的会话列表页面中,所展示的会话A、会话B、会话C和会话D的会话展示状态简化为图6最左侧所示的“A-B-C-D”的会话顺序。从而,按照图5 (b)所示的任务队列依次执行各个任务:执行任务insert1后,会话列表最上方被插入新会话E;执行任务move1后,会话列表最下方的会话D被移动至列表最上方;执行任务 insert2后,会话列表最上方被插入新会话F;执行任务delete1后,会话列表中的会话B 被删除;执行任务move2后,会话列表最下方的会话C被移动至列表最上方。上述过程中各个任务的执行顺序及各个阶段的会话顺序可参见图6。
在该实施例中,各个动画触发事件对应的独立播放任务被依次保存在任务队列中,进而被依次执行,从而在会话列表中依次呈现出各个动画的展示效果以及变化后的会话列表。
可见,上述实施例中的多个同类型的动画依然被依次展示,从而客户端在依次播放针对会话E、会话D、会话F和会话B的动画后才播放针对会话C的动画,所以可能导致针对会话C的动画播放存在较大延迟(即客户端在接收到针对会话C的新消息较长时间后,才开始播放针对会话C的动画)。例如,在上述各个动画的播放时长均为0.3s的情况下,播放针对会话C的动画的延迟时长最长可能达到4*0.3s=1.2s,从而客户端的显示效果会出现明显的卡顿感觉。为解决这一问题,客户端可以依次执行图4中的步骤402-426 对上述相同类型的任务进行合并。下面对后续步骤412-426的执行过程进行详细说明。
步骤412,判断任务队列中是否存在与上述独立播放任务对应于同类型动画的同类播放任务。
在将任一独立播放任务插入到任务队列时,可以先检查任务队列中已经被插入的动画播放任务对应的动画类型是否与该独立播放任务对应的动画类型相同,即任务队列中是否存在同类播放任务(即所对应动画类型与该独立播放任务对应的动画类型相同的动画播放任务)。若任务队列中存在上述同类播放类型,则可以转入步骤414;否则,若任务队列中不存在上述同类播放任务,则可以转入步骤416。
步骤414,根据独立播放任务和同类播放任务生成复合播放任务,并使用复合播放任务替换任务队列中的同类播放任务。
如图7中的图7(a)所示,以独立播放任务move2为例,在将独立播放任务move2插入到任务队列时,可以先检查任务队列中是否存在与独立播放任务move2同类型的动画播放任务。可见,当前任务队列中的3个动画播放任务:insert12、move1、delete1中, move1与move2属于相同类型(即当前的同类播放任务为独立播放任务move1),所以可以将move1与move2合并为复合播放任务move12。进而,可以使用合并得到的复合播放任务move12替换任务队列中的同类播放任务move1,从而将move12插入到任务队列中,插入后的队列如图7(b)所示。
当然,当前的同类播放任务也可以为复合播放任务。例如,在上述替换完成后,若在 move12尚未执行的情况下,有新的移动触发事件对应的移动播放任务move3需要插入任务队列,则客户端可以将move12确定为同类播放任务,从而将move12与move3进行合并,得到复合播放任务move123。此时,该复合播放任务move123也可以视为独立播放任务move1、move2和move3合并得到的复合播放任务。
实际上,上述insert12也是由独立播放任务insert1和独立播放任务insert2合并得到的复合播放任务。
在合并得到上述复合播放任务时,也可以将独立播放任务move2和同类播放任务move3分别对应的待合并数据所在的数组进行拼接,得到复合数组。例如,在独立播放任务move2对应的独立数据数组中包含A2[d2d2d2],同类播放任务move1对应的任务数组中包含A1[d1d1d1]的情况下,可以将两数组拼接得到A12[d1d1d1;d2d2d2]。当然,也可以采用其他拼接标规则,本公开实施例对具体拼接规则并不进行限制。
步骤416,将独立播放任务插入任务队列的队尾。
仍以图7(a)为例,若当前时刻用户选中某一会话,则客户端可以生成相应的选中播放任务select1并将其插入任务队列(图中未示出)。可以理解的是,在插入过程中,客户端可以确定当前任务队列中并不存在与该任务对应于相同类型动画的同类播放任务,从而可以将该独立播放任务select1插入任务队列的队尾——即将select1插入到delect1 上方的位置,插入后的select1即作为任务队列的新的队尾。
至此,完成了针对动画播放任务的生成及插入处理,各个动画播放任务均被插入到任务队列的相应位置。下面对任务队列中各个动画播放任务的执行过程进行详细说明。首先需要明确的是,下述步骤418-426的任务执行过程与前述步骤402-416的处理过程并不冲突,二者可以同时处理,即客户端可以在执行任务队列中各个动画播放任务的同时,生成并向任务队列中插入新的动画播放任务,从而使得任务队列中的动画播放任务数量处于动态变化过程中,因此任一时刻所述任务队列中的任务个数可以为0个、1个或多个。其中,在任务队列中存在动画播放任务的情况下,队头位于任务队列的队列出口处,而队尾的位置随队列中任务的数量发生变化。
步骤418,判断当前是否存在正在执行的动画播放任务。
在任务队列中的任务数量发生变化后,即执行判断步骤418。若客户端当前正在执行动画播放任务,则可以等待执行完毕再次进行判断;否则,若客户端当前并未执行动画播放任务,则可以转入步骤420。
步骤420,取出队头的动画播放任务。
因为任务队列具有FIFO的特性,所以客户端可以从队头处取出动画播放任务并执行。因为每次都从队头处取出动画播放任务并执行,所以保证了任务队列中的各个动画播放任务被按照出队顺序依次执行。需要说明的是,为避免相邻动画的播放冲突,客户端可以在执行任一动画播放任务完成后,再执行下一动画播放任务。其中,执行从队头取出的任一动画播放任务的过程,即为同时或先后执行下述步骤422和424的过程。
步骤422,播放动画播放任务对应的动画。
一方面,客户端可以播放动画播放任务对应的动画。其中,因为动画播放任务可能为独立播放任务或者复合播放任务,所以上述可以按照任务类型针对性执行。在该任务为独立播放任务的情况下,客户端可以在当前页面中播放该独立播放任务对应的动画;以及,在该任务为复合播放任务的情况下,客户端可以在当前页面中同时播放该复合播放任务对应的多个动画。
以图7(b)所示的任务队列为例,客户端在执行复合播放任务insert12时,可以同时播放针对会话E和会话F的插入动画,从而在会话A上方依次插入会话F和会话E——因为insert1的创建时刻早于insert2,所以虽然同时播放动画,但是会话F仍然位于会话E 上方。类似的,在执行复合播放任务move12时,可以同时播放针对会话C和会话D的移动动画,从而依次将会话D和会话C移动至会话F上方——因为move1的创建时刻早于move2,所以虽然同时播放动画,但是会话C仍然位于会话D上方。当然,也可以使会话F位于会话E下方,或者使会话D和会话C移动至会话F下方,本公开对于具体展示位置的确定规则并不进行限制,可以根据方案实现时的应用场景灵活设置。
最后,在执行独立播放任务delete1时,可以播放针对会话B的删除动画,从而将会话B从会话列表中删除。上述过程可参见图8。
步骤424,更新动画播放任务对应的数据。
另一方面,客户端可以更新动画播放任务对应的数据。例如,在执行某一独立播放任务的情况下,客户端可以使用该独立播放任务对应的独立数组中的待更新数据,更新该任务所对应展示对象的对象数据;以及,在执行某一复合播放任务的情况下,客户端可以使用该复合播放任务对应的复合数组中的各个待更新数据,分别更新该复合播放任务所对应的各个展示对象的对象数据。
仍以图7(b)所示的任务队列为例,客户端在同时播放针对会话E和会话F的插入动画时,可以将会话E的最新会话消息保存在新创建的会话E的会话数据存储空间中,并将会话F的最新会话消息保存在新创建的会话F的会话数据存储空间中。客户端在播放针对会话B的删除动画时,可以将会话B的全部会话数据从会话列表对应的存储空间中删除,当然,还可以删除本地保存的关于会话B的全部会话数据及其备份数据,本公开实施例对于删除的具体内容并不进行限制。其中,上述存储空间可以为内存或本地磁盘等,本公开实施例并不对此进行限制。
步骤426,判断任务队列中是否还存在未被执行的动画播放任务。
在当前任务队列中存在动画播放任务尚未被执行的情况下,客户端可以返回步骤420,继续取出当前时刻的队头位置的动画播放任务并执行。而在当前任务队列中的动画播放任务被全部执行完毕的情况下,可以返回至步骤406,继续开始检测动画触发事件。当然,动画触发事件也可以采用中断触发方式或事件订阅方式进行检测,本公开实施例并不对此进行限制。
与前述动画播放方法的实施例相对应地,本公开还提出了动画播放装置的实施例。
图9是根据本公开的实施例示出的一种动画播放装置的示意框图。本实施例所示的动画播放装置可以适用于动画播放应用,所述应用适用于终端设备,所述终端包括但不限于手机、平板电脑、可穿戴设备、个人计算机等电子设备。所述动画播放应用可以是安装在终端中的应用程序,也可以是集成在浏览器中的网页版应用,用户可以通过动画播放应用播放动画、展示对象等。
如图9所示,所述动画播放装置可以包括:
检测单元901,被配置为检测到动画触发事件,所述动画触发事件用于触发在当前页面中播放针对展示对象的动画;
创建单元902,被配置为根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置;
播放单元903,被配置为按照所述任务队列的出列顺序依次执行所述任务队列中的各个动画播放任务,以在所述当前页面中按照所述出列顺序先后播放分别对应于所述各个动画播放任务的动画。
可选的,所述检测单元901还被配置为:
接收到服务端发送的针对所述展示对象的数据更新消息;或者,
检测到用户在所述当前页面中针对所述展示对象实施的动画触发操作。
可选的,所述创建单元902还被配置为:
根据所述动画触发事件创建独立播放任务,并确定所述独立播放任务对应的动画类型;
在所述独立播放任务对应的动画类型与所述任务队列中的动画播放任务对应的动画类型不相同的情况下,将所述独立播放任务插入到所述任务队列的队尾,所述队尾为当前时刻所述出列顺序的最后一位。
可选的,所述播放单元903还被配置为:
在所述当前页面中播放所述独立播放任务对应的动画。
可选的,还包括:
独立保存单元904,被配置为在创建所述独立播放任务的情况下,将所述独立播放任务对应的待更新数据保存在独立数组中。
可选的,还包括:
独立更新单元905,被配置为在执行所述独立播放任务的情况下,使用所述独立数组中的待更新数据,更新所述独立播放任务所对应展示对象的对象数据。
可选的,所述创建单元902还被配置为:
根据所述动画触发事件创建独立播放任务,并确定所述独立播放任务对应的动画类型;
在所述任务队列中存在与所述独立播放任务对应于同一动画类型的同类播放任务情况下,将所述独立播放任务与所述同类播放任务合并得到复合播放任务;
使用所述复合播放任务替换所述任务队列中的所述同类播放任务。
可选的,所述播放单元903还被配置为:
在所述当前页面中同时播放所述复合播放任务对应的多个动画。
可选的,还包括:
数组拼接单元906,被配置为在合并得到所述复合播放任务的情况下,将所述独立播放任务对应的独立数组与所述同类播放任务对应的任务数组拼接为复合数组,其中,所述独立数组中记录有所述独立播放任务对应的待更新数据,所述任务数组中记录有所述同类播放任务对应的待更新数据。
可选的,还包括:
复合更新单元907,被配置为在执行所述复合播放任务的情况下,使用所述复合数组中的各个待更新数据,分别更新所述复合播放任务所对应的各个展示对象的对象数据。
可选的,所述同类播放任务为独立播放任务或复合播放任务。
可选的,所述任务队列在所述当前页面的生成阶段被创建;或者,
所述任务队列在所述当前页面所属应用程序的启动阶段被创建。
可选的,所述同类播放任务为独立播放任务或复合播放任务。
可选的,所述任务队列在所述当前页面的生成阶段被创建;或者,
所述任务队列在所述当前页面所属应用程序的启动阶段被创建。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开的实施例还提出一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述任一实施例所述的动画播放方法。
本公开的实施例还提出一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一实施例所述的动画播放方法。
本公开的实施例还提出一种计算机程序产品,包括计算机程序和/或指令,所述计算机程序和/或指令被处理器执行时实现上述任一实施例所述的动画播放方法。
图10是根据本公开的实施例示出的一种电子设备的示意框图。例如,电子设备1000 可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图10,电子设备1000可以包括以下一个或多个组件:处理组件1002,存储器1004,电源组件1006,多媒体组件1008,音频组件1010,输入/输出(I/O)的接口1012,传感器组件1014,以及通信组件1018。
处理组件1002通常控制电子设备1000的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1002可以包括一个或多个处理器1020 来执行指令,以完成上述动画播放方法的全部或部分步骤。此外,处理组件1002可以包括一个或多个模块,便于处理组件1002和其他组件之间的交互。例如,处理组件1002 可以包括多媒体模块,以方便多媒体组件1008和处理组件1002之间的交互。
存储器1004被配置为存储各种类型的数据以支持在电子设备1000的操作。这些数据的示例包括用于在电子设备1000上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1004可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件1006为电子设备1000的各种组件提供电力。电源组件1006可以包括电源管理系统,一个或多个电源,及其他与为电子设备1000生成、管理和分配电力相关联的组件。
多媒体组件1008包括在电子设备1000和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1008包括一个前置摄像头和/或后置摄像头。当电子设备1000处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1010被配置为输出和/或输入音频信号。例如,音频组件1010包括一个麦克风(MIC),当电子设备1000处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1004 或经由通信组件1018发送。在一些实施例中,音频组件1010还包括一个扬声器,用于输出音频信号。
I/O接口1012为处理组件1002和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1014包括一个或多个传感器,用于为电子设备1000提供各个方面的状态评估。例如,传感器组件1014可以检测到电子设备1000的打开/关闭状态,组件的相对定位,例如所述组件为电子设备1000的显示器和小键盘,传感器组件1014还可以检测电子设备1000或电子设备1000一个组件的位置改变,用户与电子设备1000接触的存在或不存在,电子设备1000方位或加速/减速和电子设备1000的温度变化。传感器组件1014 可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1014还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1014还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
图像采集组件1016可以用于采集被摄对象的图像数据,以形成关于被摄对象的图像,并可以对该图像进行必要的处理。该图像采集组件1016可以包括相机模组,相机模组中的图像传感器(Sensor)通过镜头感应来自被摄对象的光线,将得到的感光数据提供给图像信号处理器(ISP,Image Signal Processing),由后者根据感光数据生成对应于被摄对象的图像。其中,上述图像传感器可以为CMOS传感器或CCD传感器,当然,也可以为红外传感器、深度传感器等;相机模组可以内置在电子设备1000中,也可以为电子设备 1000的外接模组;上述ISP可以内置在相机模组中,也可以外挂在上述电子设备中(不在相机模组内)。
通信组件1018被配置为便于电子设备1000和其他设备之间有线或无线方式的通信。电子设备1000可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G 或5G),或它们的组合。在一个示例性实施例中,通信组件1018经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件 1018还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别 (RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在本公开一实施例中,电子设备1000可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述动画播放方法。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器1004,上述指令可由电子设备1000的处理器1020执行以完成上述方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
需要说明的是,在本公开中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本公开实施例所提供的方法和装置进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本公开内容不应理解为对本公开的限制。

Claims (10)

1.一种动画播放方法,其特征在于,包括:
检测到动画触发事件,所述动画触发事件用于触发在当前页面中播放针对展示对象的动画;
根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置;
按照所述任务队列的出列顺序依次执行所述任务队列中的各个动画播放任务,以在所述当前页面中按照所述出列顺序播放分别对应于所述动画播放任务的动画。
2.根据权利要求1所述的方法,其特征在于,所述检测到动画触发事件,包括:
接收到服务端发送的针对所述展示对象的数据更新消息;或者,
检测到用户在所述当前页面中针对所述展示对象实施的动画触发操作。
3.根据权利要求1所述的方法,其特征在于,所述根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置,包括:
根据所述动画触发事件创建独立播放任务,并确定所述独立播放任务对应的动画类型;
在所述独立播放任务对应的动画类型与所述任务队列中的动画播放任务对应的动画类型不相同的情况下,将所述独立播放任务插入到所述任务队列的队尾,所述队尾为当前时刻所述出列顺序的最后一位。
4.根据权利要求3所述的方法,其特征在于,执行所述独立播放任务,包括:
在所述当前页面中播放所述独立播放任务对应的动画。
5.根据权利要求3所述的方法,其特征在于,还包括:
在创建所述独立播放任务的情况下,将所述独立播放任务对应的待更新数据保存在独立数组中。
6.根据权利要求5所述的方法,其特征在于,还包括:
在执行所述独立播放任务的情况下,使用所述独立数组中的待更新数据,更新所述独立播放任务所对应展示对象的对象数据。
7.一种动画播放装置,其特征在于,包括:
检测单元,被配置为检测到动画触发事件,所述动画触发事件用于触发在当前页面中播放针对展示对象的动画;
创建单元,被配置为根据所述动画触发事件创建动画播放任务,并按照任务类型将所述动画播放任务插入到所述当前页面所对应任务队列中的相应位置;
播放单元,被配置为按照所述任务队列的出列顺序依次执行所述任务队列中的各个动画播放任务,以在所述当前页面中按照所述出列顺序先后播放分别对应于所述各个动画播放任务的动画。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的动画播放方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1至6中任一项所述的动画播放方法。
10.一种计算机程序产品,包括计算机程序和/或指令,其特征在于,所述计算机程序和/或指令被处理器执行时实现权利要求1至6中任一项所述的动画播放方法。
CN202110358401.4A 2021-04-01 2021-04-01 动画播放方法、装置、电子设备和存储介质 Pending CN113157366A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110358401.4A CN113157366A (zh) 2021-04-01 2021-04-01 动画播放方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110358401.4A CN113157366A (zh) 2021-04-01 2021-04-01 动画播放方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN113157366A true CN113157366A (zh) 2021-07-23

Family

ID=76886145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110358401.4A Pending CN113157366A (zh) 2021-04-01 2021-04-01 动画播放方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN113157366A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113709550A (zh) * 2021-08-25 2021-11-26 上海哔哩哔哩科技有限公司 直播间动画处理方法及系统
CN113825031A (zh) * 2021-11-22 2021-12-21 阿里巴巴达摩院(杭州)科技有限公司 直播内容生成方法及装置
CN115002495A (zh) * 2022-05-23 2022-09-02 上海哔哩哔哩科技有限公司 动画处理方法及装置
CN115237502B (zh) * 2022-07-30 2023-08-29 中邮消费金融有限公司 一种用于加载动画防止频繁闪烁的方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060010217A1 (en) * 2004-06-04 2006-01-12 Business Instruments Corp. System and method for dynamic adaptive user-based prioritization and display of electronic messages
CN103414627A (zh) * 2013-04-10 2013-11-27 广州华多网络科技有限公司 虚拟礼物展示方法和系统
KR20150011133A (ko) * 2013-07-22 2015-01-30 에스케이플래닛 주식회사 애니메이션 동기화를 위한 시스템 및 방법
CN105094765A (zh) * 2014-05-04 2015-11-25 北大方正集团有限公司 动画显示处理方法和动画显示处理装置
CN106331345A (zh) * 2016-08-24 2017-01-11 腾讯科技(深圳)有限公司 一种交互消息展示方法、装置及系统
CN106708895A (zh) * 2015-11-17 2017-05-24 腾讯科技(深圳)有限公司 移动社交应用中展示消息的方法和装置
CN108243151A (zh) * 2016-12-23 2018-07-03 腾讯科技(深圳)有限公司 一种自动动画播放方法、装置、客户端以及视频直播系统
CN109462769A (zh) * 2018-10-30 2019-03-12 武汉斗鱼网络科技有限公司 直播间挂件显示方法、装置、终端及计算机可读介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060010217A1 (en) * 2004-06-04 2006-01-12 Business Instruments Corp. System and method for dynamic adaptive user-based prioritization and display of electronic messages
CN103414627A (zh) * 2013-04-10 2013-11-27 广州华多网络科技有限公司 虚拟礼物展示方法和系统
KR20150011133A (ko) * 2013-07-22 2015-01-30 에스케이플래닛 주식회사 애니메이션 동기화를 위한 시스템 및 방법
CN105094765A (zh) * 2014-05-04 2015-11-25 北大方正集团有限公司 动画显示处理方法和动画显示处理装置
CN106708895A (zh) * 2015-11-17 2017-05-24 腾讯科技(深圳)有限公司 移动社交应用中展示消息的方法和装置
CN106331345A (zh) * 2016-08-24 2017-01-11 腾讯科技(深圳)有限公司 一种交互消息展示方法、装置及系统
CN108243151A (zh) * 2016-12-23 2018-07-03 腾讯科技(深圳)有限公司 一种自动动画播放方法、装置、客户端以及视频直播系统
CN109462769A (zh) * 2018-10-30 2019-03-12 武汉斗鱼网络科技有限公司 直播间挂件显示方法、装置、终端及计算机可读介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113709550A (zh) * 2021-08-25 2021-11-26 上海哔哩哔哩科技有限公司 直播间动画处理方法及系统
CN113825031A (zh) * 2021-11-22 2021-12-21 阿里巴巴达摩院(杭州)科技有限公司 直播内容生成方法及装置
CN115002495A (zh) * 2022-05-23 2022-09-02 上海哔哩哔哩科技有限公司 动画处理方法及装置
CN115237502B (zh) * 2022-07-30 2023-08-29 中邮消费金融有限公司 一种用于加载动画防止频繁闪烁的方法

Similar Documents

Publication Publication Date Title
CN113157366A (zh) 动画播放方法、装置、电子设备和存储介质
WO2022022196A1 (zh) 弹幕发布及展示方法及电子设备
CN112039929B (zh) 文件编辑方法、装置及电子设备
CN113360238A (zh) 消息处理方法、装置、电子设备和存储介质
CN111381739B (zh) 应用图标显示方法、装置、电子设备及存储介质
CN107526591B (zh) 切换直播间类型的方法和装置
CN109451341B (zh) 视频播放方法、视频播放装置、电子设备及存储介质
CN111866571B (zh) 在智能电视上编辑内容的方法、装置及存储介质
CN112153396B (zh) 页面展示方法、装置、系统和存储介质
KR20150068509A (ko) 메신저 프로그램에서의 이미지를 이용한 커뮤니케이션 방법, 이를 위한 장치 및 시스템
CN110704647A (zh) 一种内容处理方法及装置
CN110968364A (zh) 添加快捷插件的方法、装置及智能设备
CN109947506B (zh) 界面切换方法、装置及电子设备
CN110321042B (zh) 界面信息展示方法、装置及电子设备
CN113905192A (zh) 一种字幕编辑方法、装置、电子设备及存储介质
CN113988021A (zh) 内容互动方法、装置、电子设备及存储介质
CN112153218B (zh) 页面显示方法、装置、可穿戴设备及存储介质
CN112199552A (zh) 视频图像的展示方法及装置、电子设备、存储介质
CN115097984B (zh) 交互方法、装置、电子设备和存储介质
CN117119260A (zh) 视频的控制处理方法及装置
CN111835617A (zh) 用户头像调整方法、装置及电子设备
JP2024500481A (ja) ビデオ通話方法及び装置
CN114924769A (zh) 组件更新方法、装置、电子设备及存储介质
EP3001660B1 (en) Method, device and system for telephone interaction
CN114443160A (zh) 一种消息推送方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination