一种虚拟礼物展示方法及装置与流程

文档序号:12890348阅读:238来源:国知局
一种虚拟礼物展示方法及装置与流程

本发明涉及互联网弹幕式视频直播技术领域,具体而言,涉及一种虚拟礼物展示方法及装置。



背景技术:

直播网站会出售各种形式的虚拟商品(通常被称之为礼物),这些礼物在用户赠送给主播时会展现其相应的动画和交互效果。一个直播间会提供数种礼物,这些礼物对应着不同的价格。在一个正常播放的直播间中,当有用户赠送礼物时,所有收看该直播间的用户都会在页面上观看到礼物的展示特效。展示特效由一系列的异步动画顺序执行完成,不同的动画之间可能还会存在着交互关系,例如,价格高的礼物能够将价格低的礼物的动画提前结束。

随着业务的演变,这些礼物自身的展示过程以及同其他礼物的交互关系变得越来越复杂。从软件开发人员的角度来看,代码中会充斥着大量的逻辑判断,不同类型礼物的执行步骤被杂糅在一起。当业务发展到一定阶段,这样的解决方案将无法支撑直播业务的开展,进而影响用户观看网站直播的体验。



技术实现要素:

有鉴于此,本发明的目的在于提供一种虚拟礼物展示方法及装置,以改善上述问题。

本发明较佳实施例提供一种虚拟礼物展示方法,具体地,该方法包括:生成用于目标礼物展示的任务链路,所述任务链路包括对应所述目标礼物的展示特效的至少一个异步动画任务;按照预先定义的任务执行顺序执行所述至少一个异步动画任务中的每一个;执行各所述异步动画任务时,从与该异步动画任务关联的资源池中获取动画资源,并且根据预先设定的执行逻辑操作所述动画资源。

可选地,本发明实施例中,每一个异步动画任务对应有标识其的唯一标识字符串。据此,所述生成用于目标礼物展示的任务链路的步骤可以包括:通过每个异步动画任务对应的唯一标识字符串,以声明式的语法生成所述用于目标礼物展示的任务链路。

可选地,本发明实施例中,同一所述异步动画任务能够被用于不同礼物展示的任务链路所复用;在两个或更多个用于不同礼物展示的任务链路中,相同的异步动画任务能够共享相同的资源池。

可选地,本发明实施例中,所述方法还包括:如果要执行任务链路中的任意异步动画任务时检测到有其他任务链路中的同一异步动画任务正在执行,则停止当前执行的事件并等待直至所述其他任务链路中的同一异步动画任务执行结束后再继续该执行的事件。

可选地,设定任意目标异步动画任务所需的动画资源的dom节点能够被复用,所述方法还包括:当所述目标异步动画任务需要被相继地重复执行时,通过所述dom节点的复用功能复用首次执行该目标异步动画任务时从资源池获取的动画资源,并且用于后续相继地重复执行该目标异步动画任务的过程中。

本发明另一较佳实施例提供一种虚拟礼物展示装置,所述装置包括:任务链路生成模块,用于生成用于目标礼物展示的任务链路,所述任务链路包括对应所述目标礼物的展示特效的至少一个异步动画任务;动画任务执行模块,用于按照预先定义的任务执行顺序执行所述至少一个异步动画任务中的每一个;动画资源操作模块,用于执行各所述异步动画任务时,从与该异步动画任务关联的资源池中获取动画资源,并且根据预先设定的执行逻辑操作所述动画资源。

可选地,本发明实施例中,每一个异步动画任务对应有标识其的唯一标识字符串;所述任务链路生成模块生成用于目标礼物展示的任务链路的方式,包括:通过每个异步动画任务对应的唯一标识字符串,以声明式的语法生成所述用于目标礼物展示的任务链路。

可选地,本发明实施例中,同一所述异步动画任务能够被用于不同礼物展示的任务链路所复用;在两个或更多个用于不同礼物展示的任务链路中,相同的异步动画任务能够共享相同的资源池。

可选地,所述虚拟礼物展示装置还包括:动画任务调度模块,用于如果要执行任务链路中的任意异步动画任务时检测到有其他任务链路中的同一异步动画任务正在执行,则停止当前执行的事件并等待直至所述其他任务链路中的同一异步动画任务执行结束后再继续该执行的事件。

可选地,设定任意目标异步动画任务所需的动画资源的dom节点能够被复用,所述虚拟礼物展示装置还包括:动画资源复用模块,用于当所述目标异步动画任务需要被相继地重复执行时,通过所述dom节点的复用功能复用首次执行该目标异步动画任务时从资源池获取的动画资源,并且用于后续相继地重复执行该目标异步动画任务的过程中。

本发明实施例提供的虚拟礼物展示方法及装置,可以应用于互联网直播网站中的虚拟礼物展示过程,其采用责任链模式构建虚拟礼物展示框架,并通过资源池调用以及队列调度实现直播网站中礼物的高效及有序展示。具体地,当用户终端触发礼物赠送事件(用户选择目标礼物赠送给当前所观看的直播间的主播)时,生成用于目标礼物展示的任务链路,然后按照预先定义的任务执行顺序执行任务链路中的每一个异步动画任务,并且在执行各异步动画任务时,从与该异步动画任务关联的资源池中获取动画资源,并且根据预先设定的执行逻辑操作该动画资源。这种虚拟礼物展示方法采用责任链设计模式搭建礼物展示流程的实现框架,以声明式的语法生成用于礼物展示的任务链路,使得以前杂糅在代码逻辑中的流程显式的表达出来,具备更好的维护性和扩展性,能够有效支撑业务的开展,提升用户的体验。

进一步地,这种虚拟礼物展示方法中的礼物展示流程(异步动画任务执行顺序)具备更好适用性,能够在前一个动画任务执行完成后自行按照事先定义的顺序关系执行下一个动画任务,并且具有更好的可调整性,当在某实施方式中需要调整不同动画任务之间的执行顺序时,仅需要改变定义执行顺序处的代码即可,而无需像现有的方法一样必须整体调换每个动画任务对应的代码执行块。

更进一步地,这种虚拟礼物展示方法通过实现相同的异步动画任务可以共享同一资源池以及相同的异步动画任务可以复用在用于不同礼物展示的任务链路中,使得代码能够充分被复用,更能在代码维护时有效减小副作用范围,减少开发人员的工作量。此外,这种虚拟礼物展示方法中还实现了动画任务调度,使得存在交互关系(如复用有同一异步动画任务)的两个任务链路在执行时,能够保障两者全部充分且有效的展示,并且还能在此基础上实现动画资源的复用,不必反复的创建和销毁动画资源的dom节点,从而提升直播系统性能。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的服务器通过网络与一个或多个用户终端进行通信交互的示意图;

图2为本发明实施例提供的一种执行虚拟礼物展示方法的服务器的方框示意图;

图3为本发明实施例提供的一种虚拟礼物展示方法的流程图;

图4为本发明实施例提供的一种采用调度队列实现对异步动画任务调度的示意图;

图5为本发明实施例提供的一种虚拟礼物展示装置的功能模块示意图。

图标:100-服务器;200-用户终端;110-虚拟礼物展示装置;120-存储器;130-处理器;1102-任务链路生成模块;1104-动画任务执行模块;1106-动画资源操作模块;1108-动画任务调度模块;1110-动画资源复用模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,是本发明实施例提供的服务器100通过网络与一个或多个用户终端200进行通信交互的示意图。该服务器100可以是互联网直播网站(例如,斗鱼)的后台服务器,但不限制于此。用户可以通过用户终端200与服务器100之间的通信交互观看服务器100提供的网络直播,并选择性进行用户操作(例如,用直播网站提供的虚拟礼物打赏主播)。服务器100可以是数据库服务器、web服务器等。用户终端200可以是个人电脑、平板电脑、智能手机等。

请参阅图2,是本发明实施例提供的一种执行虚拟礼物展示方法的服务器100的方框示意图。该服务器100包括虚拟礼物展示装置110、存储器120以及处理器130。其中,存储器120与处理器130之间直接或间接地电性连接,以实现数据的传输或交互。虚拟礼物展示装置110包括至少一个可以软件或固件的形式存储于存储器120中或固化在服务器100的操作系统中的软件功能模块。处理器130用于执行存储器120中存储的可执行模块,例如虚拟礼物展示装置110所包括的软件功能模块及计算机程序等。处理器130可以在接收到执行指令后,执行所述计算机程序。

请参阅图3,是本发明实施例提供的一种虚拟礼物展示方法的流程图。所应说明的是,本实施例提供的方法不以图3及以下所述的具体顺序为限制。下面将对图3中所示的各步骤进行详细的阐述。

步骤s101,生成用于目标礼物展示的任务链路,所述任务链路包括对应所述目标礼物的展示特效的至少一个异步动画任务。

本实施例中,采用设计模式中的责任链模式(chainofresponsibility)构建礼物展示实现过程的框架。即,将目标礼物的所有异步动画任务组装成一条“任务链路”,链路中的每个异步动画任务可以视作一个“步骤”。

本实施例中,采用声明式的语法生成礼物的执行流程,使得前杂糅在代码逻辑中的流程能够显式的表达出来,令系统具备更好的维护性和扩展性。

例如,以礼物“火箭”和“飞机”为示例,其中,礼物“火箭”展示流程包括四个异步动画任务:起飞-展现横幅-落入宝箱-显示宝箱及倒计时,礼物“飞机”展示流程包括三个异步动画任务:展现横幅-落入宝箱-显示宝箱及倒计时。

现有技术中实现礼物“火箭”展示流程的程序模块是将上述四个异步动画任务分别对应的数百行甚至更多的代码依次罗列;同样地,现有技术中实现礼物“飞机”展示流程的代码模块是将上述三个异步动画任务分别对应的数百行甚至更多的代码再依次罗列一遍。可以看出,这种程序实现方法简单粗暴,可维护性和可扩展性差。例如,当需要修改异步动画任务“展现横幅”的程序块时,则需要将所有包括该异步动画任务“展现横幅”的礼物展示过程的代码全部一一修改一遍,其副作用范围大,操作易错率高。

本实施例中采用的技术是,作为一种实施方式,令每一个异步动画任务对应有标识其的唯一标识字符串,然后基于此,通过每个异步动画任务对应的唯一标识字符串,以声明式的语法生成用于目标礼物展示的任务链路。例如,假设四个异步动画任务—起飞、展现横幅、落入宝箱以及显示宝箱及倒计时分别对应的唯一标识字符串为animation-fly、animation-banner、animation-fall和animation-show。则采用声明式的语法生成礼物“火箭”、“飞机”展示流程的任务链路时,可以是直接以唯一字符串的组合来显示地声明礼物的执行流程。例如:“火箭”={animation-fly、animation-banner、animation-fall、animation-show},“飞机”={animation-banner、animation-fall、animation-show}。可以理解,上述的示例仅是为了便于技术理解而给出的简化示例,并不表示实际程序操作时的代码体现为上述形式。

采用本实施例提供的方法,在维护或扩展系统时,副作用范围明显缩小。例如,当需要修改“展示横幅”的程序块时,基本上仅需要修改一处,而无需像现有技术一样,凡是包含这一动画任务的礼物执行流程都要修改一遍。

另外,可以从上述示例看出,本实施例提供的方法中,同一异步动画任务可以被用于不同礼物展示的任务链路所复用。例如,上述示例中,可以直接复用“火箭”的后三个异步动画任务展现横幅-落入宝箱-显示宝箱及倒计时,由它们生成成一个新的礼物“飞机”的执行流程。这样可以充分复用程序,更能在修改程序时明显地缩小副作用范围。

步骤s103,按照预先定义的任务执行顺序执行任务链路中的每一个异步动画任务。

本实施例中,针对生成的任务链路预设有任务执行顺序。在执行礼物的展示流程时,任务链路中的异步动画任务将按照预设的执行顺序执行。

在执行任意的异步动画任务时,可以从与该异步动画任务关联的资源池中获取动画资源,并且根据预先设定的执行逻辑操作所述动画资源。例如,当需要执行礼物“火箭”的异步动画任务“起飞”时,可以从与该异步动画任务“起飞”相关联的资源池中获取动画资源(例如,火箭图片),然后根据预先设定的执行逻辑操作该动画资源(例如,将火箭图片由屏幕底端快速移动至屏幕顶端)。

另外,本实施例中,在两个或更多个用于不同礼物展示的任务链路中,相同的异步动画任务能够共享相同的资源池。例如,上述示例中,礼物“火箭”和“飞机”的任务链路中均包括异步动画任务“展现横幅”,则这两个任务链路中的异步动画任务“展现横幅”在执行时,可以复用同一个资源池。这样,可以降低系统的内存消耗,提升系统性能。

步骤s105,如果要执行任务链路中的任意异步动画任务时检测到有其他任务链路中的同一异步动画任务正在执行,则停止当前执行的事件并等待直至所述其他任务链路中的同一异步动画任务执行结束后再继续该执行的事件。

本实施例中,可以采用调度队列实现对异步动画任务的调度。例如,如图4所示,作为一种示例,横轴表示时间轴,当在t1时刻礼物“火箭”的异步动画任务11(起飞)执行完成后,要继续执行异步动画任务12(展现横幅)时,发现另一个礼物“飞机”的异步动画任务21(展现横幅)正在执行中,则可以停止当前执行的“火箭”的执行流程,并等待直至“飞机”的异步动画任务21执行完成后,即在时刻t2后,再继续执行“火箭”的异步动画任务12(展现横幅)。后续两个异步动画任务13和14的调度方式同理可推。

另外,本实施例中,可以设定任意目标异步动画任务所需的动画资源的dom节点可以被复用。例如,可以设定动画资源—火箭图片的dom节点可以被复用。则当需要相继执行十次礼物“火箭”的展示流程时,仅需要从资源池调用一次火箭图片,然后通过dom节点的复用功能复用首次执行该异步动画任务时从资源池获取的火箭图片,并且用于后续相继地九次重复执行该动画任务“起飞”的过程中。这样,就不必反复的创建和销毁动画资源,从而能够提升系统性能。

下面给出一简要阐述了本实施例提供的方法基于程序实现的可操作实例。可以理解,该示例并不意在限制本公开的范围。

1)将所有步骤抽象为基类chainmanager,其中:

1.1)基类包含apply方法,该方法将执行当前异步动画任务所需的信息传给资源池;

例如,执行礼物“火箭”的异步动画任务“起飞”时,该apply方法可以将异步动画任务“起飞”所需的动画资源传递至资源池,以获取动画资源诸如火箭图片。

1.2)基类包含setnextmanager方法,该方法将传入的manager设置为nextmanager;

该setnextmanager方法可以用于定义后继处理者,即,定义后续的异步执行任务,以实现对任务链路中各个异步动画任务执行顺序的定义。

1.3)基类包含gonext方法,该方法调用c中nextmanager的apply方法。

基于上述setnextmanager方法定义的任务执行顺序,可以应用gonext方法使得执行任务链路时,各个异步动画任务可以按照顺序执行。

2)根据基类及具体业务场景实现代表各个具体异步动画任务的子类,具体地,各个子类继承基类中的各个方法以实现任务链路生成、资源调用以及顺序执行。

3)定义一系列pool类(资源池),其与2)中的子类相关联。相同的子类可以共享同一个pool实例。

4)定义一系列queue类(调度队列),其与3)中的pool类关联,每个pool实例需要预存queue实例的引用。在queue类中,定义异步动画任务的执行逻辑以及调度方法。

5)定义一个giftcenter类,在该类中生成所有礼物的任务链路。

请参阅图5,是本发明实施例提供的一种虚拟礼物展示装置110的功能模块示意图。虚拟礼物展示装置110包括任务链路生成模块1102、动画任务执行模块1104、动画资源操作模块1106、动画任务调度模块1108、动画资源复用模块1110。

所述任务链路生成模块1102,用于生成用于目标礼物展示的任务链路,所述任务链路包括对应所述目标礼物的展示特效的至少一个异步动画任务。该任务链路生成模块1102可以用于执行上述图3中所示的步骤s101,具体操作方法可参照关于步骤s101的详细阐述。

所述动画任务执行模块1104,用于按照预先定义的任务执行顺序执行所述至少一个异步动画任务中的每一个。该动画任务执行模块1104可以用于执行上述图3中所示的步骤s103,具体操作方法可参照关于步骤s103的详细阐述。

所述动画资源操作模块1106,用于执行各所述异步动画任务时,从与该异步动画任务关联的资源池中获取动画资源,并且根据预先设定的执行逻辑操作所述动画资源。该动画资源操作模块1106可以用于执行上述图3中所示的步骤s103,具体操作方法可参照关于步骤s103的详细阐述。

所述动画任务调度模块1108,用于如果要执行任务链路中的任意异步动画任务时检测到有其他任务链路中的同一异步动画任务正在执行,则停止当前执行的事件并等待直至所述其他任务链路中的同一异步动画任务执行结束后再继续该执行的事件。该动画任务调度模块1108可以用于执行上述图3中所示的步骤s105,具体操作方法可参照关于步骤s105的详细阐述。

所述动画资源复用模块1110,用于当所述目标异步动画任务需要被相继地重复执行时,通过所述dom节点的复用功能复用首次执行该目标异步动画任务时从资源池获取的动画资源,并且用于后续相继地重复执行该目标异步动画任务的过程中。

本发明实施例所提供的虚拟礼物展示装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1