CN109828791B - 一种动画播放方法、终端和计算机可读存储介质 - Google Patents
一种动画播放方法、终端和计算机可读存储介质 Download PDFInfo
- Publication number
- CN109828791B CN109828791B CN201811629400.3A CN201811629400A CN109828791B CN 109828791 B CN109828791 B CN 109828791B CN 201811629400 A CN201811629400 A CN 201811629400A CN 109828791 B CN109828791 B CN 109828791B
- Authority
- CN
- China
- Prior art keywords
- animation
- interface
- game engine
- native
- static library
- 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.)
- Active
Links
Images
Abstract
本发明实施例提供了一种动画播放方法、终端和计算机可读存储介质,涉及动画技术领域。其中,该方法包括:在目标动画应用启动完成时,目标动画应用中的游戏引擎静态库创建用户界面UI线程;响应于目标动画的播放指令,游戏引擎静态库在UI线程中创建引擎动画视图;游戏引擎静态库创建渲染线程;渲染线程独立于UI线程运行;游戏引擎静态库在渲染线程中对目标动画的各帧动画图像按序进行渲染;游戏引擎静态库将渲染后的各帧动画图像在引擎动画视图中按序显示,实现目标动画的播放。在本发明中,游戏引擎静态库可在独立于UI线程运行的渲染线程中渲染动画图像,而无需在UI线程中渲染,从而能避免UI线程产生卡顿,提高了动画播放的流畅性。
Description
技术领域
本发明涉及动画技术领域,特别是涉及一种动画播放方法、终端和计算机可读存储介质。
背景技术
随着动画技术的飞速发展,带有动画功能的应用软件越来越多,例如游戏应用软件,可以在用户进行游戏操作时,展示相应的游戏动画界面,再例如,目前市面上有一些面向儿童的动画应用软件,可以为儿童提供益智、教学等方面的动画视频或游戏,当然,还有一些应用软件也具有播放动画的附加功能。
在目前的诸多动画应用软件中,很多都是基于原生(Native)框架进行开发,此类应用软件通常是通过原生框架端实现动画播放。由于原生框架端的动画页面具有静态页面的属性,因此,原生开发的动画应用软件在播放动画时,若要对动画页面中的动画图像进行渲染,从而刷新动画图像,则需要在UI(User Interface,用户界面)线程上渲染整个用户界面,以实现动画图像的刷新。
然而,若用户界面中存在多个动画需要同时进行播放时,多个渲染指令会同时下达至UI线程,如此,将会造成UI线程的卡顿,使得部分动画的动画图像渲染滞后,从而降低了动画播放的流畅性。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种提高动画播放流畅性的动画播放方法、终端和计算机可读存储介质。
根据本发明的第一方面,提供了一种动画播放方法,应用于安装有目标动画应用的终端,所述方法包括:
在所述目标动画应用启动完成时,所述目标动画应用中的游戏引擎静态库创建用户界面UI线程;
响应于目标动画的播放指令,所述游戏引擎静态库在所述UI线程中创建引擎动画视图;
所述游戏引擎静态库创建渲染线程;所述渲染线程独立于所述UI线程运行;
所述游戏引擎静态库在所述渲染线程中对所述目标动画的各帧动画图像按序进行渲染;
所述游戏引擎静态库将渲染后的所述各帧动画图像在所述引擎动画视图中按序显示,实现所述目标动画的播放。
可选地,所述方法还包括:
在播放所述目标动画时,所述游戏引擎静态库接收针对第一接口的第一调用指令;所述第一接口为所述目标动画应用中的原生框架端中的功能接口;
响应于所述第一调用指令,所述游戏引擎静态库根据所述第一接口所作用的类的类名、所述第一接口对应的静态函数名以及所述第一接口实现功能所需的第一输入参数,调用所述第一接口;
所述原生框架端运行所述第一接口中的静态函数,以使所述静态函数根据所述第一输入参数,实现针对所述目标动画的第一控制功能。
可选地,所述第一接口为所述原生框架端中目标原生控件对应的功能接口,所述原生框架端运行所述第一接口中的静态函数,以使所述静态函数根据所述第一输入参数,实现针对所述目标动画的第一控制功能,包括:
在当前的动画图像渲染完成时,所述原生框架端根据所述第一输入参数,创建原生动画视图;
所述原生框架端在所述原生动画视图中对所述目标原生控件进行渲染;
渲染后的所述目标原生控件对所述目标动画执行目标控制操作,以实现所述第一接口中的静态函数的运行。
可选地,所述原生框架端和所述游戏引擎静态库均采用开放图形库OpenGL进行图像渲染,所述原生框架端在所述原生动画视图中对所述目标原生控件进行渲染之前,还包括:
所述原生框架端调用预置的游戏引擎暂停接口,以使所述游戏引擎静态库暂停运行。
可选地,所述方法还包括:
在所述静态函数运行完毕之后,所述原生框架端接收针对第二接口的第二调用指令;所述第二接口为所述游戏引擎静态库中需要根据输入参数实现功能的任一功能接口;
响应于所述第二调用指令,所述原生框架端根据所述第二接口对应的直译式脚本语言JavaScript函数名以及所述第二接口实现功能所需的第二输入参数,调用所述第二接口;
所述游戏引擎静态库运行所述第二接口中的JavaScript函数,以使所述JavaScript函数根据所述第二输入参数,实现针对所述目标动画的第二控制功能。
可选地,所述原生框架端和所述游戏引擎静态库均采用OpenGL进行图像渲染,所述响应于所述第二调用指令,所述原生框架端根据所述第二接口对应的直译式脚本语言JavaScript函数名以及所述第二接口实现功能所需的第二输入参数,调用所述第二接口之前,还包括:
所述原生框架端调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库恢复运行。
可选地,所述方法还包括:
在所述静态函数运行完毕之后,所述原生框架端接收针对第三接口的第三调用指令;
响应于所述第三调用指令,所述原生框架端将针对所述第三接口的调用通知发送至所述游戏引擎静态库;
当所述游戏引擎静态库监听到所述调用通知时,调用所述第三接口;
所述游戏引擎静态库运行所述第三接口中的目标函数,以使所述目标函数实现针对所述目标动画的第三控制功能。
可选地,所述原生框架端和所述游戏引擎静态库均采用OpenGL进行图像渲染,所述响应于所述第三调用指令,所述原生框架端将针对所述第三接口的调用通知发送至所述游戏引擎静态库之前,还包括:
所述原生框架端调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库恢复运行。
可选地,所述在所述目标动画应用启动完成时,所述目标动画应用中的游戏引擎静态库创建UI线程之后,还包括:
所述原生框架端中预置的语音工具包采集用户语音信息;
所述语音工具包对所述用户语音信息进行语音识别,获得所述用户语音信息对应的动画控制指令;
响应于所述动画控制指令,所述游戏引擎静态库或所述原生框架端对至少一个预置动画执行预设控制操作;
其中,所述预设控制操作包括动画的开启操作和关闭操作、动画页面的大小控制操作、动画特效的触发操作中的至少一种。
可选地,所述终端还安装有系统,所述在所述目标动画应用启动完成时,所述目标动画应用中的游戏引擎静态库创建UI线程之前,还包括:
所述系统响应于所述目标动画应用的启动指令,对所述目标动画应用中的游戏引擎静态库进行初始化,以使所述目标动画应用启动;
所述系统创建视图控制器;所述视图控制器中包括用于管理视图的各个接口;
相应的,所述响应于目标动画的播放指令,所述游戏引擎静态库在所述UI线程中创建引擎动画视图,包括:
响应于目标动画的播放指令,所述游戏引擎静态库调用预置的视图创建接口,以在所述UI线程中创建引擎动画视图;所述引擎动画视图为所述视图控制器的根视图或子视图。
可选地,所述终端还安装有应用创建平台,所述终端系统响应于所述目标动画应用的启动指令,对预置的游戏引擎静态库进行初始化,以使所述目标动画应用启动之前,还包括:
所述应用创建平台获取游戏引擎包及应用文件;所述应用文件包括所述目标动画应用的脚本文件、资源文件和配置文件;
所述应用创建平台对所述游戏引擎包进行编译,获得游戏引擎静态库;
所述应用创建平台将所述游戏引擎静态库依赖的预置库文件添加至原生框架端工程中;
所述应用创建平台获取用于桥接所述游戏引擎静态库与原生框架端的接口文件;所述接口文件中包括所述游戏引擎静态库与所述原生框架端交互所需的各个接口;
所述应用创建平台将所述游戏引擎静态库、所述应用文件、所述接口文件添加至所述原生框架端工程中,获得目标动画应用工程;
所述应用创建平台对所述目标动画应用工程进行编译,以实现目标动画应用的创建。
可选地,所述游戏引擎静态库为Cocos2d-JS引擎静态库。
根据本发明的第二方面,提供了一种终端,所述终端安装有目标动画应用,所述目标动画应用包括游戏引擎静态库;
所述游戏引擎静态库,用于在所述目标动画应用启动完成时,所创建用户界面UI线程;
所述游戏引擎静态库,还用于响应于目标动画的播放指令,在所述UI线程中创建引擎动画视图;
所述游戏引擎静态库,还用于创建渲染线程;所述渲染线程独立于所述UI线程运行;
所述游戏引擎静态库,还用于在所述渲染线程中对所述目标动画的各帧动画图像按序进行渲染;
所述游戏引擎静态库,还用于将渲染后的所述各帧动画图像在所述引擎动画视图中按序显示,实现所述目标动画的播放。
可选地,所述目标动画应用还包括原生框架端;
所述游戏引擎静态库,还用于响应于所述第一调用指令,根据所述第一接口所作用的类的类名、所述第一接口对应的静态函数名以及所述第一接口实现功能所需的第一输入参数,调用所述第一接口;
所述原生框架端,用于运行所述第一接口中的静态函数,以使所述静态函数根据所述第一输入参数,实现针对所述目标动画的第一控制功能。
可选地,所述第一接口为所述原生框架端中目标原生控件对应的功能接口,所述原生框架端,还用于在当前的动画图像渲染完成时,根据所述第一输入参数,创建原生动画视图;
所述原生框架端,还用于在所述原生动画视图中对所述目标原生控件进行渲染;
渲染后的所述目标原生控件,用于对所述目标动画执行目标控制操作,以实现所述第一接口中的静态函数的运行。
可选地,所述原生框架端和所述游戏引擎静态库均采用开放图形库OpenGL进行图像渲染,所述原生框架端,还用于调用预置的游戏引擎暂停接口,以使所述游戏引擎静态库暂停运行。
可选地,所述原生框架端,还用于在所述静态函数运行完毕之后,接收针对第二接口的第二调用指令;所述第二接口为所述游戏引擎静态库中需要根据输入参数实现功能的任一功能接口;
所述原生框架端,还用于响应于所述第二调用指令,根据所述第二接口对应的直译式脚本语言JavaScript函数名以及所述第二接口实现功能所需的第二输入参数,调用所述第二接口;
所述游戏引擎静态库,还用于运行所述第二接口中的JavaScript函数,以使所述JavaScript函数根据所述第二输入参数,实现针对所述目标动画的第二控制功能。
可选地,所述原生框架端和所述游戏引擎静态库均采用OpenGL进行图像渲染,所述原生框架端,还用于调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库恢复运行。
可选地,所述原生框架端,还用于在所述静态函数运行完毕之后,接收针对第三接口的第三调用指令;
所述原生框架端,还用于响应于所述第三调用指令,将针对所述第三接口的调用通知发送至所述游戏引擎静态库;
所述游戏引擎静态库,还用于当监听到所述调用通知时,调用所述第三接口;
所述游戏引擎静态库,还用于运行所述第三接口中的目标函数,以使所述目标函数实现针对所述目标动画的第三控制功能。
可选地,所述原生框架端和所述游戏引擎静态库均采用OpenGL进行图像渲染,所述原生框架端,还用于调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库恢复运行。
可选地,所述原生框架端包括预置的语音工具包,所述语音工具包,用于采集用户语音信息;
所述语音工具包,还用于对所述用户语音信息进行语音识别,获得所述用户语音信息对应的动画控制指令;
所述游戏引擎静态库或所述原生框架端,还用于响应于所述动画控制指令,对至少一个预置动画执行预设控制操作;
其中,所述预设控制操作包括动画的开启操作和关闭操作、动画页面的大小控制操作、动画特效的触发操作中的至少一种。
可选地,所述终端还安装有系统,所述系统,用于响应于所述目标动画应用的启动指令,对所述目标动画应用中的游戏引擎静态库进行初始化,以使所述目标动画应用启动;
所述系统,还用于创建视图控制器;所述视图控制器中包括用于管理视图的各个接口;
相应的,所述游戏引擎静态库,还用于响应于目标动画的播放指令,调用预置的视图创建接口,以在所述UI线程中创建引擎动画视图;所述引擎动画视图为所述视图控制器的根视图或子视图。
可选地,所述终端还安装有应用创建平台;
所述应用创建平台,用于获取游戏引擎包及应用文件;所述应用文件包括所述目标动画应用的脚本文件、资源文件和配置文件;
所述应用创建平台,还用于对所述游戏引擎包进行编译,获得游戏引擎静态库;
所述应用创建平台,还用于将所述游戏引擎静态库依赖的预置库文件添加至原生框架端工程中;
所述应用创建平台,还用于获取用于桥接所述游戏引擎静态库与原生框架端的接口文件;所述接口文件中包括所述游戏引擎静态库与所述原生框架端交互所需的各个接口;
所述应用创建平台,还用于将所述游戏引擎静态库、所述应用文件、所述接口文件添加至所述原生框架端工程中,获得目标动画应用工程;
所述应用创建平台,还用于对所述目标动画应用工程进行编译,以实现目标动画应用的创建。
可选地,所述游戏引擎静态库为Cocos2d-JS引擎静态库。
根据本发明的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现动画播放方法的步骤。
本发明实施例包括以下优点:
在本发明实施例中,目标动画应用中的游戏引擎静态库首先可以在目标动画应用启动完成时,创建UI线程,之后响应于目标动画的播放指令,游戏引擎静态库可以在UI线程中创建引擎动画视图,然后游戏引擎静态库可以创建一个独立于UI线程运行的渲染线程,并在该渲染线程中对目标动画的各帧动画图像按序进行渲染,进而游戏引擎静态库可以将渲染后的各帧动画图像在引擎动画视图中按序显示,实现目标动画的播放。在本发明实施例中,目标动画应用中的游戏引擎静态库可以在UI线程之外,创建一个独立于UI线程运行的渲染线程,并可以在渲染线程中执行针对目标动画中各帧动画图像的渲染操作,而无需在UI线程中执行渲染操作,从而在用户界面中存在多个动画需要进行渲染时,多个渲染指令可以分别下达至多个渲染线程,并在多个渲染线程中分别进行动画渲染,如此,则无需UI线程对多个渲染指令进行响应,进而能够避免UI线程产生卡顿。进一步的,多个动画的渲染操作可以分别在多个渲染线程中同步执行,而无需在UI线程中依次执行,从而能够避免部分动画的动画图像渲染滞后,提高了动画播放的流畅性。
附图说明
图1是本发明实施例提供的一种动画播放方法的流程图;
图2是本发明实施例提供的另一种动画播放方法的流程图;
图3是本发明实施例提供的一种游戏应用的架构示意图;
图4是本发明实施例提供的一种终端的框图;
图5是本发明实施例提供的另一种终端的框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了一种动画播放方法的流程图,该方法可以应用于安装有目标动画应用的终端,该方法具体可以包括如下步骤:
步骤101:在目标动画应用启动完成时,目标动画应用中的游戏引擎静态库创建用户界面UI线程。
在实际应用中,目标动画应用可以为终端中安装的任一种具有动画播放功能的应用,例如可以播放游戏动画的游戏应用、可以播放儿童益智动画的儿童早教应用等等。用户可以点击目标动画应用的应用图标、启动链接等,从而终端可以接收到目标动画应用的启动指令。
目标动画应用中可以包括游戏引擎静态库,以及实现动画播放之外的功能的至少一个静态库和至少一个动态库,当接收到目标动画应用的启动指令时,响应于该启动指令,终端的系统可以对目标动画应用中的游戏引擎静态库进行初始化,以及对目标动画应用中的其他静态库和动态库进行初始化,对各个库进行初始化的过程也即是分别对各个库进行接口适配、视图适配、屏幕适配、变量赋初值等准备工作,各个库经过初始化之后,才能够在目标动画应用的运行过程中执行其中包含的方法函数。
目标动画应用中的各个静态库和各个动态库的初始化执行完毕时,目标动画应用也即完成了启动过程,此时,目标动画应用中的游戏引擎静态库可以创建一个UI线程。在UI线程中,目标动画应用可以执行与用户界面相关的操作,例如创建视图、调整视图大小等操作。
步骤102:响应于目标动画的播放指令,游戏引擎静态库在UI线程中创建引擎动画视图。
在本发明实施例中,在UI线程创建之后,用户可以通过点击、划动等方式触发终端播放目标动画应用中的目标动画,从而终端可以接收到目标动画的播放指令。响应于该目标动画的播放指令,目标动画应用中的游戏引擎静态库可以在UI线程中创建引擎动画视图,也即是该引擎动画视图的创建过程是在UI线程中进行的。引擎动画视图是屏幕中的一个矩形区域,在其中可以进行目标动画中各帧动画图像的展示。另外,该引擎动画视图由游戏引擎静态库创建,相应的,该引擎动画视图后续的相关控制操作也由游戏引擎静态库执行,也即该引擎动画视图是由游戏引擎静态库管理的一个视图。
步骤103:游戏引擎静态库创建渲染线程;渲染线程独立于UI线程运行。
在UI线程中创建引擎动画视图之后,游戏引擎静态库可以在UI线程之外,单独创建一个用于执行动画图像渲染操作的渲染线程。该渲染线程和UI线程可以通过并行的方式各自独立运行,从而在渲染线程中执行的功能和在UI线程中执行的功能将互不影响。
步骤104:游戏引擎静态库在渲染线程中对目标动画的各帧动画图像按序进行渲染。
游戏引擎静态库创建出独立于UI线程的渲染线程之后,可以按照目标动画的各帧动画图像的播放顺序,在渲染线程中对目标动画的各帧动画图像进行渲染。
步骤105:游戏引擎静态库将渲染后的各帧动画图像在引擎动画视图中按序显示,实现目标动画的播放。
游戏引擎静态库在渲染线程中完成针对各帧动画图像的渲染操作之后,可以按照各帧动画图像的播放顺序,将渲染后的各帧动画图像在引擎动画视图中依次进行显示,从而可以实现目标动画的播放。
本发明实施例包括以下优点:
在本发明实施例中,目标动画应用中的游戏引擎静态库首先可以在目标动画应用启动完成时,创建UI线程,之后响应于目标动画的播放指令,游戏引擎静态库可以在UI线程中创建引擎动画视图,然后游戏引擎静态库可以创建一个独立于UI线程运行的渲染线程,并在该渲染线程中对目标动画的各帧动画图像按序进行渲染,进而游戏引擎静态库可以将渲染后的各帧动画图像在引擎动画视图中按序显示,实现目标动画的播放。在本发明实施例中,目标动画应用中的游戏引擎静态库可以在UI线程之外,创建一个独立于UI线程运行的渲染线程,并可以在渲染线程中执行针对目标动画中各帧动画图像的渲染操作,而无需在UI线程中执行渲染操作,从而在用户界面中存在多个动画需要进行渲染时,多个渲染指令可以分别下达至多个渲染线程,并在多个渲染线程中分别进行动画渲染,如此,则无需UI线程对多个渲染指令进行响应,进而能够避免UI线程产生卡顿。进一步的,多个动画的渲染操作可以分别在多个渲染线程中同步执行,而无需在UI线程中依次执行,从而能够避免部分动画的动画图像渲染滞后,提高了动画播放的流畅性。
参照图2,示出了另一种动画播放方法的流程图,该方法可以应用于安装有系统、目标动画应用和应用创建平台的终端,其中,该目标动画应用中包括游戏引擎静态库和原生框架端。游戏引擎静态库也即目标动画应用中基于游戏引擎开发的静态库,游戏引擎静态库可以实现动画播放功能,以及一部分动画控制功能。原生框架端中可以包括目标动画应用中基于原生框架开发的各类原生接口、原生模块等等,原生框架端也可以实现一部分动画控制功能。该方法具体可以包括如下步骤:
步骤201:应用创建平台创建目标动画应用。
在本发明实施例中,终端中的应用创建平台首先可以创建一个包括游戏引擎静态库和原生框架端的目标动画应用,具体地,本步骤可以通过下述子步骤(1)至(6)实现,包括:
子步骤(1):应用创建平台获取游戏引擎包及应用文件;应用文件包括目标动画应用的脚本文件、资源文件和配置文件。
其中,应用文件中的目标动画应用的脚本文件、资源文件和配置文件可以事先进行编写,以目标动画应用是一个可以播放游戏动画的游戏应用为例,脚本文件具体可以包括各种游戏场景下的游戏脚本,在实际应用中,可以通过webstorm工具(直译式脚本语言开发工具)进行脚本文件的编写和调试。资源文件具体可以包括游戏图片资源文件、游戏音频资源文件等等,配置文件具体可以包括用于记录目标动画应用运行环境参数的文件、用于记录用户注册信息的文件等等,本发明实施例对此不作具体限定。当用户需要创建目标动画应用时,可以将游戏引擎包及应用文件导入应用创建平台中,从而应用创建平台可以获取到用户导入的游戏引擎包及应用文件。
子步骤(2):应用创建平台对游戏引擎包进行编译,获得游戏引擎静态库。
应用创建平台获取到游戏引擎包之后,可以将游戏引擎包编译为游戏引擎静态库,并集成到目标动画应用的原生框架端工程中。游戏引擎包的集成方式可以包括源码集成和静态库集成这两种方式,在具体应用时,为了实现源码保护,可以采用静态库集成的方式将游戏引擎包集成到原生框架端工程中。在本发明实施例中,游戏引擎包可以为Cocos2d-JS引擎包,也即是Cocos2d-x引擎包的JavaScript(直译式脚本语言)版本,相应的,游戏引擎静态库则为Cocos2d-JS引擎静态库。Cocos2d-JS引擎可以采用原生JavaScript语言开发,可发布到Web(全球广域网)、iOS(iPhone operating system,苹果手机操作系统)、Android(安卓)、Windows Phone8(微软手机操作系统8.0版本)、Mac(苹果电脑)、Windows(微软操作系统)等平台,Cocos2d-JS引擎基于MIT(Massachusetts InstituteofTechnology,麻省理工学院)开源协议,完全开源且免费,易学易用。相比于其他类似的游戏框架,Cocos2d-JS引擎定义了更加清晰的2D游戏编程的基本组件,采用更加易学易用的API(Application Programming Interface,应用程序编程接口)设计,更利于提高开发效率。
其中,Cocos2d-JS引擎是一个基于OpenGL(Open Graphics Library,开放图形库)的游戏引擎,因此,Cocos2d-JS引擎底层的图像渲染功能可以由OpenGL实现。OpenGL是一个基于C语言的三维图形API,基本功能包含绘制几何图形、变换、着色、光照、贴图等。除了基本功能,OpenGL还提供了诸如光栅操作、景深、着色编程等高级功能。
应用创建平台可以将Cocos2d-JS引擎包编译为Cocos2d-JS引擎静态库,具体地,可以通过js-bindings(javascript-bindings,直译式脚本语言绑定)工具将JavaScript格式的脚本文件绑定到Cocos2d-x引擎包的相关API上,从而获得Cocos2d-JS引擎包。经过绑定之后,JavaScript格式的脚本文件能够调用原生框架端中的C++代码,以实现原生框架端的一些动画控制功能,原生框架端中的C++代码也能够调用JavaScript格式的脚本文件,以实现Cocos2d-JS引擎静态库的一些动画控制功能。
子步骤(3):应用创建平台将游戏引擎静态库依赖的预置库文件添加至原生框架端工程中。
应用创建平台编译得到游戏引擎静态库之后,可以将游戏引擎静态库依赖的预置库文件添加至原生框架端工程中。其中,预置库文件具体可以包括图片处理相关的库文件,网络配置相关的库文件、加密相关的库文件等等,本发明实施例对此不作具体限定。在添加预置库文件之后,用户需要手动修改预置库文件的引入路径,以使原生框架端工程在后续的编译过程中,能够正确链接到预置库文件,进而在目标动画应用的运行过程中,预置库文件才能够被调用并执行其对应的操作。
子步骤(4):应用创建平台获取用于桥接游戏引擎静态库与原生框架端的接口文件;接口文件中包括游戏引擎静态库与原生框架端交互所需的各个接口。
在本发明实施例中,用户可以创建一个用于桥接游戏引擎静态库与原生框架端的接口文件,例如可以是CocosAdapter(Cocos适配器)文件和/或CocosAppDelegate(Cocos应用代理)文件。
其中,CocosAdapter文件是一个可应用于iOS平台的用于桥接游戏引擎静态库与原生框架端的接口文件,CocosAdapter文件中定义了CocosAdapter类和CocosAdapter类对应的各个函数接口,这些函数接口中的函数运行时可以实现游戏引擎静态库与原生框架端在不同情况下的相互调用。CocosAppDelegate文件是一个可应用于iOS平台和安卓平台的用于桥接游戏引擎静态库与原生框架端的接口文件,CocosAppDelegate文件中定义了CocosAppDelegate类和CocosAppDelegate类对应的各个函数接口,这些函数接口中的函数运行时同样可以实现游戏引擎静态库与原生框架端在不同情况下的相互调用。
相比于CocosAdapter文件,CocosAppDelegate文件的方法函数中具备的功能更多,且CocosAppDelegate文件还可以在安卓平台使用,因此在实际应用中,用户可以将CocosAdapter文件和CocosAppDelegate文件均导入至应用创建平台中,以扩展接口文件的功能和平台应用范围,从而应用创建平台获取到用户导入的CocosAdapter文件和CocosAppDelegate文件。
子步骤(5):应用创建平台将游戏引擎静态库、应用文件、接口文件添加至原生框架端工程中,获得目标动画应用工程。
在子步骤(5)中,应用创建平台可以在原生框架端工程中创建一个单独的文件夹,并将编译获得的游戏引擎静态库、应用文件以及接口文件添加到该文件夹中,从而可以获得集成有游戏引擎静态库的目标动画应用工程。
子步骤(6):应用创建平台对目标动画应用工程进行编译,以实现目标动画应用的创建。
在本发明实施例中,应用创建平台可以对目标动画应用工程进行整体编译,目标动画应用工程经过编译之后便可以得到目标动画应用,至此,目标动画应用的创建完成。
需要说明的是,在实际应用中,上述步骤201也可以在一个开发终端上单独进行,进而其他终端可以下载并安装该目标动画应用,并执行后续步骤,本发明实施例对此不作具体限定。
步骤202:系统响应于目标动画应用的启动指令,对目标动画应用中的游戏引擎静态库进行初始化,以使目标动画应用启动。
在本发明实施例中,用户可以点击目标动画应用的应用图标、启动链接等,从而终端可以接收到目标动画应用的启动指令,终端的系统响应于目标动画应用的启动指令,可以对目标动画应用中的游戏引擎静态库进行初始化,以使目标动画应用启动。其中,本步骤中启动目标动画应用的具体实现过程可以参考步骤101中的相关过程,在此不再赘述。
步骤203:系统创建视图控制器;视图控制器中包括用于管理视图的各个接口。
在目标动画应用启动完成时,终端的系统可以创建视图控制器,也即创建一个视图控制器类的实例对象,其中,该视图控制器类对应有用于管理视图的各个接口,系统创建出视图控制器类的一个实例对象之后,该实例对象则可以调用用于管理视图的至少一个接口,并运行接口中的方法函数,从而可以实现至少一种视图管理功能,例如放大或缩小某个视图、创建子视图等功能。
步骤204:在目标动画应用启动完成时,目标动画应用中的游戏引擎静态库创建UI线程。
本步骤的具体实现过程可以参考步骤101中的相关过程,在此不再赘述。
步骤205:响应于目标动画的播放指令,游戏引擎静态库调用预置的视图创建接口,以在UI线程中创建引擎动画视图;引擎动画视图为视图控制器的根视图或子视图。
在本发明实施例中,游戏引擎静态库响应于目标动画的播放指令,可以调用预置的视图创建接口,也即视图控制器类对应的一个视图创建接口,并在UI线程中运行视图创建接口中的视图创建函数,从而可以创建出由游戏引擎静态库进行管理的引擎动画视图。
在具体应用中,视图管理器是以层级结构进行视图管理的,也即通过视图管理器中的接口创建的第一视图即为视图管理器的根视图,终端可以对该根视图应用视图管理器中的所有方法函数,后续终端可以在该根视图的基础上,创建至少一个引用该根视图的子视图,各个子视图均位于根视图所在的显示区域内。在实际应用中,若目标动画是目标动画应用启动完成后需要播放的第一个动画,例如游戏主场景界面对应的动画,则引擎动画视图即为视图管理器的根视图。若目标动画不是目标动画应用启动完成后需要播放的第一个动画,例如进入游戏主场景界面之后触发的某个游戏副本界面对应的动画,则说明在引擎动画视图创建前,已经创建了根视图,相应的,引擎动画视图即为视图管理器的一个子视图。
步骤206:游戏引擎静态库创建渲染线程;渲染线程独立于UI线程运行。
本步骤的具体实现过程可以参考步骤103中的相关过程,在此不再赘述。
步骤207:游戏引擎静态库在渲染线程中对目标动画的各帧动画图像按序进行渲染。
本步骤的具体实现过程可以参考步骤104中的相关过程,在此不再赘述。
步骤208:游戏引擎静态库将渲染后的各帧动画图像在引擎动画视图中按序显示,实现目标动画的播放。
游戏引擎静态库在渲染线程中完成针对各帧动画图像的渲染操作之后,可以按照各帧动画图像的播放顺序,将渲染后的各帧动画图像在引擎动画视图中依次进行显示,从而可以实现目标动画的播放。
进一步的,由于游戏引擎静态库和原生框架端均可以实现一部分动画控制功能,因此,在目标动画播放的过程中,目标动画应用还可以执行以下三个方面的步骤。第一方面是游戏引擎静态库调用原生框架端中的功能接口,以实现原生框架端的动画控制功能的步骤;第二方面是原生框架端调用游戏引擎静态库中需要输入参数的功能接口,以实现游戏引擎静态库的一些动画控制功能的步骤;第三方面是原生框架端调用游戏引擎静态库中不需要输入参数的功能接口,以实现游戏引擎静态库的另一些动画控制功能的步骤。以下将对这三个方面进行详细说明。
对于上述第一方面,由于原生框架端可以在动画播放过程中实现一部分动画控制功能,例如Button(按钮)控件对应的虚拟按钮功能、Image(图片)控件对应的图片显示功能、虚拟现实功能等等,因此,游戏引擎静态库在播放目标动画的过程中,可以对原生框架端中的功能接口进行调用,从而实现该功能接口对应的动画控制功能。
在实际应用中,游戏引擎静态库通过调用原生框架端中的功能接口实现动画控制功能的方式可以包括:在播放目标动画时,游戏引擎静态库接收针对第一接口的第一调用指令;第一接口为目标动画应用中的原生框架端中的功能接口;响应于第一调用指令,游戏引擎静态库根据第一接口所作用的类的类名、第一接口对应的静态函数名以及第一接口实现功能所需的第一输入参数,调用第一接口;原生框架端运行第一接口中的静态函数,以使静态函数根据第一输入参数,实现针对目标动画的第一控制功能。
其中,在播放目标动画的过程中,游戏引擎静态库可以在用户触发第一接口时,或者在针对第一接口预设的触发条件满足时,接收到针对第一接口的第一调用指令。其中,第一接口中的函数运行时,可以实现针对目标动画的第一控制功能。响应于第一调用指令,游戏引擎静态库可以通过包含第一接口所作用的类的类名、第一接口对应的静态函数名以及第一接口实现功能所需的第一输入参数的调用代码,对第一接口进行调用。进而原生框架端可以运行第一接口中的静态函数,以使静态函数根据第一输入参数,实现针对目标动画的第一控制功能。相应的,在编写第一接口时,可以将其中的函数编写为静态函数,从而游戏引擎静态库可以通过调用静态函数的方式,实现原始框架端中第一接口的调用。
具体的,第一接口可以为原生框架端中目标原生控件对应的功能接口,其中,目标原生控件例如可以是Button控件、Image控件、Label(标签)控件、原生播放器控件、虚拟现实控件等等,本发明实施例对此不作具体限定。相应的,上述原生框架端运行第一接口中的静态函数,以使静态函数根据第一输入参数,实现针对目标动画的第一控制功能的步骤,具体可以通过下述方式实现,包括:在当前的动画图像渲染完成时,原生框架端根据第一输入参数,创建原生动画视图;原生框架端在原生动画视图中对目标原生控件进行渲染;渲染后的目标原生控件对目标动画执行目标控制操作,以实现第一接口中的静态函数的运行。
其中,由于控件通常需要一个视图区域进行操作,例如Button控件需要一个视图区域来显示虚拟按钮,并需要在该视图区域中接收用户的点击操作,再例如Image控件需要一个视图区域来显示网络图片、本地图片等等,因此,第一输入参数可以为创建原生动画视图所需的视图位置、视图大小等视图属性,第一接口所作用的类的类名也即是视图类的类名,相应的,在目标动画当前的一帧动画图像渲染完成时,原生框架端可以调用视图创建接口,以在界面中创建一个具备该视图属性的原生动画视图,该原生动画视图即为视图类的一个实例对象。之后原生框架端可以在该原生动画视图中对目标原生控件进行渲染,进而渲染后的目标原生控件可以对目标动画执行目标控制操作,以实现第一接口中的静态函数的运行。其中,由于原生动画视图是在引擎动画视图的基础上创建的,因此,原生动画视图实际上是引擎动画视图的一个子视图,在实际应用中,可以通过addSubview(添加子视图)创建函数,创建原生动画视图。
进一步的,在具体应用中,有一些原生框架端创建的视图与游戏引擎静态库创建的视图在分别进行渲染时是互不影响的,例如labelView(标签视图)、buttonView(按钮视图)、imageView(图片视图)等等,但是对于一些原生框架端创建的需要采用OpenGL进行图像渲染的特殊视图,例如原生播放器控件对应的视图、虚拟现实控件对应的视图等等,由于游戏引擎静态库创建的视图也是采用OpenGL进行图像渲染,因此,若对于当前界面中的各个视图,原生框架端和游戏引擎静态库均采用OpenGL进行图像渲染,则原生框架端在原生动画视图中对目标原生控件进行渲染之前,还可以执行下述步骤:原生框架端调用预置的游戏引擎暂停接口,以使游戏引擎静态库暂停运行。
其中,在原生框架端和游戏引擎静态库均采用OpenGL在各自管理的视图中进行图像渲染的过程中,当遇到渲染任务临时中断、多个渲染任务切换换等情况时,OpenGL需要进行上下文切换,也即是任务切换。而由于原生框架端和游戏引擎静态库管理的渲染任务同时存在,因此,OpenGL可能会产生上下文切换错误,例如将应该在游戏引擎静态库创建的视图中显示的图像渲染到了原生框架端创建的视图中,进而会导致OpenGL崩溃。因此,原生框架端在原生动画视图中对目标原生控件进行渲染之前,可以调用游戏引擎暂停接口,并运行该游戏引擎暂停接口中的函数,以使游戏引擎静态库暂停运行。如此,原生框架端在进行渲染时,不会切换到游戏引擎静态库视图的上下文,从而能够避免OpenGL因发生上下文切换错误而导致崩溃。
例如,目标原生控件可以为原生播放器控件,第一输入参数可以包括引擎动画视图右上角对应的目标视图位置,以及7cm×5cm(厘米)的目标视图大小,相应的,在当前的动画图像渲染完成时,原生框架端可以在目标视图位置创建一个7cm×5cm大小的原生动画视图,进而原生框架端可以调用预置的游戏引擎暂停接口,以使游戏引擎静态库暂停运行,游戏引擎静态库的运行暂停之后,原生框架端可以在原生动画视图中对原生播放器控件进行渲染,从而能够显示出一个原生播放器的窗口,之后渲染后的原生播放器控件可以显示与目标动画相关的动画,例如目标动画中放大某个小区域后的动画、目标动画中某个游戏物品的使用说明动画等等。
进一步的,对于上述第二方面,第一接口中的静态函数运行完毕时,原生框架端也即实现了针对目标动画的第一控制功能,进而原生框架端可以对游戏引擎静态库中的功能接口进行调用,从而实现该功能接口对应的动画控制功能,恢复游戏引擎静态库的控制。在实际应用中,游戏引擎静态库中的一些功能接口是需要根据输入参数实现功能的,比如在一个简单的例子中,求和功能的实现是需要向求和功能接口输入至少两个数字,从而求和功能接口才能进行求和。
对于游戏引擎静态库中需要输入参数的此类接口,目标动画应用可以执行下述步骤,包括:在静态函数运行完毕之后,原生框架端接收针对第二接口的第二调用指令;第二接口为游戏引擎静态库中需要根据输入参数实现功能的任一功能接口;响应于第二调用指令,原生框架端根据第二接口对应的JavaScript(直译式脚本语言)函数名以及第二接口实现功能所需的第二输入参数,调用第二接口;游戏引擎静态库运行第二接口中的JavaScript函数,以使JavaScript函数根据第二输入参数,实现针对目标动画的第二控制功能。其中,该第二输入参数即为原生框架端的静态函数需要向游戏引擎静态库中的第二接口传递的参数值,例如终端型号、登录信息等等。
其中,在静态函数运行完毕之后,原生框架端可以在用户触发第二接口时,或者在针对第二接口预设的触发条件满足时,接收到针对第二接口的第二调用指令。其中,第二接口中的函数运行时,可以实现针对目标动画的第二控制功能。响应于第二调用指令,原生框架端可以通过包含第二接口对应的JavaScript函数名以及第二接口实现功能所需的第二输入参数的调用代码,对第二接口进行调用。进而游戏引擎静态库可以运行第二接口中的JavaScript函数,以使JavaScript函数根据第二输入参数,实现针对目标动画的第二控制功能,例如根据当前用户的登录信息统计当前用户的登录时长,并在登录时长大于预设时长时暂停播放目标动画,进而显示提示信息,以提醒当前用户观看动画的时间过长的功能等等。相应的,在编写第二接口时,可以将其中的函数编写为JavaScript函数,从而原始框架端可以通过调用JavaScript函数的方式,实现游戏引擎静态库中第二接口的调用。
需要说明的是,上述求和功能的例子仅用于对需要根据输入参数实现功能的功能接口进行解释说明,在实际应用中,游戏引擎静态库中可以存在该求和功能接口,当然也可以不存在该求和功能接口,本发明实施例对此不作具体限定。
进一步的,若对于当前界面中的各个视图,原生框架端和游戏引擎静态库均采用OpenGL进行图像渲染,则在响应于第二调用指令,原生框架端根据第二接口对应的JavaScript函数名以及第二接口实现功能所需的第二输入参数,调用第二接口的步骤之前,原生框架端还可以执行下述步骤:原生框架端调用预置的游戏引擎恢复接口,以使游戏引擎静态库恢复运行。
在原生框架端实现第一控制功能的过程中,若原生框架端和游戏引擎静态库均采用OpenGL在各自管理的视图中进行图像渲染,则原生框架端在运行静态函数的过程中,会调用游戏引擎暂停接口,以使游戏引擎静态库暂停运行,以避免OpenGL产生上下文切换错误。因此,在原生框架端调用游戏引擎静态库中的第二接口之前,原生框架端可以调用游戏引擎恢复接口,并运行该游戏引擎恢复接口中的函数,以使游戏引擎静态库恢复运行,游戏引擎静态库恢复运行后,才能够运行第二接口中的JavaScript函数。
进一步的,对于上述第三方面,在实际应用中,游戏引擎静态库中还有一些功能接口是可以直接实现功能的,也即是不需要根据输入参数实现功能,比如在一个简单的例子中,对当前界面进行截图备份的功能的实现是不需要向截图备份功能接口输入任何参数的,截图备份功能接口可以直接对当前界面进行截图并备份。
对于游戏引擎静态库中不需要输入参数的此类接口,目标动画应用可以执行下述步骤,包括:在静态函数运行完毕之后,原生框架端接收针对第三接口的第三调用指令;响应于第三调用指令,原生框架端将针对第三接口的调用通知发送至游戏引擎静态库;当游戏引擎静态库监听到调用通知时,调用第三接口;游戏引擎静态库运行第三接口中的目标函数,以使目标函数实现针对目标动画的第三控制功能。
其中,与第二接口的区别是,第三接口为游戏引擎静态库中不需要根据输入参数实现功能的任一功能接口,其中,在编写第三接口时,可以将其中的目标函数编写为JavaScript函数、C++函数等等,本发明实施例对此不作具体限定。
在静态函数运行完毕之后,原生框架端可以在用户触发第三接口时,或者在针对第三接口预设的触发条件满足时,接收到针对第三接口的第三调用指令。其中第三接口中的函数运行时,可以实现针对目标动画的第三控制功能。响应于第三调用指令,原生框架端可以生成一个针对第三接口的调用通知,目标动画应用中可以定义一个通知类,原生框架端可以创建出通知类的一个实例对象,该实例对象也即是针对第三接口的调用通知。游戏引擎静态库中可以配置通知的监听机制,从而在原生框架端将针对第三接口的调用通知发送至游戏引擎静态库之后,游戏引擎静态库可以监听到该调用通知,进而游戏引擎静态库可以调用第三接口,并运行第三接口中的目标函数,以使目标函数实现针对目标动画的第三控制功能,例如对当前界面进行截图备份的功能、记录当前登录的IP(InternetProtocol,互联网协议)地址等等。
需要说明的是,上述截图备份功能功能的例子仅用于对不需要根据输入参数实现功能的功能接口进行解释说明,在实际应用中,游戏引擎静态库中可以存在该截图备份功能接口,当然也可以不存在该截图备份功能接口,本发明实施例对此不作具体限定。
进一步的,若对于当前界面中的各个视图,原生框架端和游戏引擎静态库均采用OpenGL进行图像渲染,则在响应于第三调用指令,原生框架端将针对第三接口的调用通知发送至游戏引擎静态库的步骤之前,原生框架端还可以执行下述步骤:原生框架端调用预置的游戏引擎恢复接口,以使游戏引擎静态库恢复运行。
在原生框架端实现第一控制功能的过程中,若原生框架端和游戏引擎静态库均采用OpenGL在各自管理的视图中进行图像渲染,则原生框架端在运行静态函数的过程中,会调用游戏引擎暂停接口,以使游戏引擎静态库暂停运行,以避免OpenGL产生上下文切换错误。因此,在原生框架端向游戏引擎静态库发送针对第三接口的调用通知之前,原生框架端可以调用游戏引擎恢复接口,并运行该游戏引擎恢复接口中的函数,以使游戏引擎静态库恢复运行,游戏引擎静态库恢复运行后,才能够监听到针对第三接口的调用通知。
通过游戏引擎静态库与原生框架端相结合的方式进行动画控制,可以使动画界面既拥有游戏引擎带来的炫酷感和趣味感,又拥有原生框架带来的实用感,并且扩充了目标动画应用的动画控制功能。
此外,传统动画应用主要还是通过点击、划动等触屏操作、或者鼠标、键盘等输入设备来完成与用户之间的交互,而对于面向儿童群体的动画应用来说,触屏操作或者输入设备的输入操作对于低龄儿童来说存在一定的难度,因为低龄儿童的肢体控制能力不强,常常无法准确触发终端屏幕上的指定点,或者还无法具备使用输入设备的能力,如此,将降低动画应用对于儿童的吸引力,因此,在实际应用中,还可以在目标动画应用中配置语音功能,从而儿童可以通过语音功能实现动画的控制,例如实现动画的播放、切换、特效展示等等。
在实际应用中,可以在目标动画应用的原生框架端中集成一个语音工具包,相应的,目标动画应用还可以执行下述步骤:原生框架端中预置的语音工具包采集用户语音信息;语音工具包对用户语音信息进行语音识别,获得用户语音信息对应的动画控制指令;响应于动画控制指令,游戏引擎静态库或原生框架端对至少一个预置动画执行预设控制操作;其中,预设控制操作包括动画的开启操作和关闭操作、动画页面的大小控制操作、动画特效的触发操作中的至少一种。
其中,该语音工具包可以用于实现语音识别、语音播放等功能,在具体应用中,该语音工具包可以为百度语音SDK(Software Development Kit,软件开发工具包),或者其他语音工具包,本发明实施例对此不作具体限定。在目标动画应用启动完毕之后,原生框架端可以调用该语音工具包,当用户与目标动画应用进行语音互动时,语音工具包可以采集到用户语音信息,然后语音工具包可以对该用户语音信息进行语音识别,也即是识别出用户讲话的内容,例如“打开小兔子故事”、“关闭动物童话”等等,语音工具包可以基于该内容生成对应的动画控制指令,例如可以基于“打开小兔子故事”的用户语音信息生成打开《小兔子故事》动画的动画控制指令,再例如可以基于“关闭动物童话”的用户语音信息生成关闭《动物童话》动画的动画控制指令。
响应于该动画控制指令,游戏引擎静态库或原生框架端可以对至少一个预置动画执行预设控制操作。其中,由于该动画控制指令所作用的视图可以是游戏引擎静态库管理的视图,也可以是原生框架端管理的视图,因此,当该动画控制指令所作用的视图为游戏引擎静态库管理的视图时,游戏引擎静态库可以在其管理的视图中,对至少一个预置动画执行开启、关闭、放大、缩小等预设控制操作。当该动画控制指令所作用的视图为原生框架端管理的视图时,原生框架端可以在其管理的视图中,对至少一个预置动画执行开启、关闭、放大、缩小等预设控制操作。在具体应用中,目标动画可以是至少一个预置动画中的一者。
需要说明的是,在实际应用中,除动画页面的大小控制操作、动画特效的触发操作等操作之外,预设控制操作可以包括其他的动画控制操作,例如动画的暂停操作等等,本发明实施例对此不作具体限定。
在实际应用中,目标动画应用可以为具有游戏动画播放功能的游戏应用,图3示出了一种游戏应用的架构示意图,参照图3,游戏应用大致可以包括以下几个模块:游戏页面控制器10、Cocos控制器20、Cocos适配器30、Cocos2d-JS引擎静态库40、Cocos游戏脚本50以及原生框架端60,其中,原生框架端60中预置有语音工具包70。
其中,游戏页面控制器10相当于上述终端系统创建的视图控制器,可以负责游戏页面的展示。Cocos控制器20可以负责管理Cocos2d-JS引擎静态库40的生命周期,包括进入后台、退出、启动、暂停、恢复,以及原生框架端60调用Cocos2d-JS引擎静态库40的调用动作中转等等。Cocos适配器30也即通过C++语言编写的跨平台接口层,可以用于实现Cocos2d-JS引擎静态库与原生框架端60之间的桥接。Cocos2d-JS引擎静态库40是指已编译为静态库形式的Cocos2d-JS引擎;Cocos游戏脚本50可以用于实现各种游戏场景下的动画效果,例如粒子效果、碰撞效果、物理模拟效果等等。语音工具包70可以用于对采集的用户语音信息进行语音识别,从而获得用户语音信息对应的动画控制指令,并响应该动画控制指令,以执行该动画控制指令所指示的动画控制操作。
本发明实施例包括以下优点:
在本发明实施例中,目标动画应用中的游戏引擎静态库首先可以在目标动画应用启动完成时,创建UI线程,之后响应于目标动画的播放指令,游戏引擎静态库可以在UI线程中创建引擎动画视图,然后游戏引擎静态库可以创建一个独立于UI线程运行的渲染线程,并在该渲染线程中对目标动画的各帧动画图像按序进行渲染,进而游戏引擎静态库可以将渲染后的各帧动画图像在引擎动画视图中按序显示,实现目标动画的播放。之后游戏引擎静态库可以调用目标动画应用中原生框架端的功能接口实现对应的动画控制功能,原生框架端也可以调用游戏引擎静态库的功能接口实现对应的动画控制功能。
在本发明实施例中,目标动画应用中的游戏引擎静态库可以在UI线程之外,创建一个独立于UI线程运行的渲染线程,并可以在渲染线程中执行针对目标动画中各帧动画图像的渲染操作,而无需在UI线程中执行渲染操作,从而在用户界面中存在多个动画需要进行渲染时,多个渲染指令可以分别下达至多个渲染线程,并在多个渲染线程中分别进行动画渲染,如此,则无需UI线程对多个渲染指令进行响应,进而能够避免UI线程产生卡顿。进一步的,多个动画的渲染操作可以分别在多个渲染线程中同步执行,而无需在UI线程中依次执行,从而能够避免部分动画的动画图像渲染滞后,提高了动画播放的流畅性。另外,通过游戏引擎静态库与原生框架端相结合的方式进行动画控制,可以使目标动画应用兼具两者的控制功能,进而可以使动画界面兼具两者带来的展示效果。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了一种终端400的框图,该终端400安装有目标动画应用401,所述目标动画应用401包括游戏引擎静态库4011;
所述游戏引擎静态库4011,用于在所述目标动画应用启动完成时,所创建用户界面UI线程;
所述游戏引擎静态库4011,还用于响应于目标动画的播放指令,在所述UI线程中创建引擎动画视图;
所述游戏引擎静态库4011,还用于创建渲染线程;所述渲染线程独立于所述UI线程运行;
所述游戏引擎静态库4011,还用于在所述渲染线程中对所述目标动画的各帧动画图像按序进行渲染;
所述游戏引擎静态库4011,还用于将渲染后的所述各帧动画图像在所述引擎动画视图中按序显示,实现所述目标动画的播放。
本发明实施例包括以下优点:
在本发明实施例中,目标动画应用中的游戏引擎静态库首先可以在目标动画应用启动完成时,创建UI线程,之后响应于目标动画的播放指令,游戏引擎静态库可以在UI线程中创建引擎动画视图,然后游戏引擎静态库可以创建一个独立于UI线程运行的渲染线程,并在该渲染线程中对目标动画的各帧动画图像按序进行渲染,进而游戏引擎静态库可以将渲染后的各帧动画图像在引擎动画视图中按序显示,实现目标动画的播放。在本发明实施例中,目标动画应用中的游戏引擎静态库可以在UI线程之外,创建一个独立于UI线程运行的渲染线程,并可以在渲染线程中执行针对目标动画中各帧动画图像的渲染操作,而无需在UI线程中执行渲染操作,从而在用户界面中存在多个动画需要进行渲染时,多个渲染指令可以分别下达至多个渲染线程,并在多个渲染线程中分别进行动画渲染,如此,则无需UI线程对多个渲染指令进行响应,进而能够避免UI线程产生卡顿。进一步的,多个动画的渲染操作可以分别在多个渲染线程中同步执行,而无需在UI线程中依次执行,从而能够避免部分动画的动画图像渲染滞后,提高了动画播放的流畅性。
参照图5,示出了另一种终端500的框图,该终端500安装有目标动画应用501,所述目标动画应用501包括游戏引擎静态库5011;
所述游戏引擎静态库5011,用于在所述目标动画应用启动完成时,所创建用户界面UI线程;
所述游戏引擎静态库5011,还用于响应于目标动画的播放指令,在所述UI线程中创建引擎动画视图;
所述游戏引擎静态库5011,还用于创建渲染线程;所述渲染线程独立于所述UI线程运行;
所述游戏引擎静态库5011,还用于在所述渲染线程中对所述目标动画的各帧动画图像按序进行渲染;
所述游戏引擎静态库5011,还用于将渲染后的所述各帧动画图像在所述引擎动画视图中按序显示,实现所述目标动画的播放。
可选地,参照图5,所述目标动画应用501还包括原生框架端5012;
所述游戏引擎静态库5011,还用于响应于所述第一调用指令,根据所述第一接口所作用的类的类名、所述第一接口对应的静态函数名以及所述第一接口实现功能所需的第一输入参数,调用所述第一接口;
所述原生框架端5012,用于运行所述第一接口中的静态函数,以使所述静态函数根据所述第一输入参数,实现针对所述目标动画的第一控制功能。
可选地,所述第一接口为所述原生框架端5012中目标原生控件对应的功能接口,所述原生框架端5012,还用于在当前的动画图像渲染完成时,根据所述第一输入参数,创建原生动画视图;
所述原生框架端5012,还用于在所述原生动画视图中对所述目标原生控件进行渲染;
渲染后的所述目标原生控件,用于对所述目标动画执行目标控制操作,以实现所述第一接口中的静态函数的运行。
可选地,所述原生框架端5012和所述游戏引擎静态库5011均采用开放图形库OpenGL进行图像渲染,所述原生框架端5012,还用于调用预置的游戏引擎暂停接口,以使所述游戏引擎静态库5011暂停运行。
可选地,所述原生框架端5012,还用于在所述静态函数运行完毕之后,接收针对第二接口的第二调用指令;所述第二接口为所述游戏引擎静态库5011中需要根据输入参数实现功能的任一功能接口;
所述原生框架端5012,还用于响应于所述第二调用指令,根据所述第二接口对应的直译式脚本语言JavaScript函数名以及所述第二接口实现功能所需的第二输入参数,调用所述第二接口;
所述游戏引擎静态库5011,还用于运行所述第二接口中的JavaScript函数,以使所述JavaScript函数根据所述第二输入参数,实现针对所述目标动画的第二控制功能。
可选地,所述原生框架端5012和所述游戏引擎静态库5011均采用OpenGL进行图像渲染,所述原生框架端5012,还用于调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库5011恢复运行。
可选地,所述原生框架端5012,还用于在所述静态函数运行完毕之后,接收针对第三接口的第三调用指令;
所述原生框架端5012,还用于响应于所述第三调用指令,将针对所述第三接口的调用通知发送至所述游戏引擎静态库5011;
所述游戏引擎静态库5011,还用于当监听到所述调用通知时,调用所述第三接口;
所述游戏引擎静态库5011,还用于运行所述第三接口中的目标函数,以使所述目标函数实现针对所述目标动画的第三控制功能。
可选地,所述原生框架端5012和所述游戏引擎静态库5011均采用OpenGL进行图像渲染,所述原生框架端5012,还用于调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库5011恢复运行。
可选地,所述原生框架端5012包括预置的语音工具包50121,所述语音工具包50121,用于采集用户语音信息;
所述语音工具包50121,还用于对所述用户语音信息进行语音识别,获得所述用户语音信息对应的动画控制指令;
所述游戏引擎静态库5011或所述原生框架端5012,还用于响应于所述动画控制指令,对至少一个预置动画执行预设控制操作;
其中,所述预设控制操作包括动画的开启操作和关闭操作、动画页面的大小控制操作、动画特效的触发操作中的至少一种。
可选地,参照图5,所述终端还安装有系统502,所述系统502,用于响应于所述目标动画应用501的启动指令,对所述目标动画应用501中的游戏引擎静态库5011进行初始化,以使所述目标动画应用501启动;
所述系统502,还用于创建视图控制器;所述视图控制器中包括用于管理视图的各个接口;
相应的,所述游戏引擎静态库5011,还用于响应于目标动画的播放指令,调用预置的视图创建接口,以在所述UI线程中创建引擎动画视图;所述引擎动画视图为所述视图控制器的根视图或子视图。
可选地,参照图5,所述终端还安装有应用创建平台503;
所述应用创建平台503,用于获取游戏引擎包及应用文件;所述应用文件包括所述目标动画应用501的脚本文件、资源文件和配置文件;
所述应用创建平台503,还用于对所述游戏引擎包进行编译,获得游戏引擎静态库5011;
所述应用创建平台503,还用于将所述游戏引擎静态库5011依赖的预置库文件添加至原生框架端5012工程中;
所述应用创建平台503,还用于获取用于桥接所述游戏引擎静态库5011与原生框架端5012的接口文件;所述接口文件中包括所述游戏引擎静态库5011与所述原生框架端5012交互所需的各个接口;
所述应用创建平台503,还用于将所述游戏引擎静态库5011、所述应用文件、所述接口文件添加至所述原生框架端5012工程中,获得目标动画应用501工程;
所述应用创建平台503,还用于对所述目标动画应用501工程进行编译,以实现目标动画应用501的创建。
可选地,所述游戏引擎静态库5011为Cocos2d-JS引擎静态库。
本发明实施例包括以下优点:
在本发明实施例中,目标动画应用中的游戏引擎静态库首先可以在目标动画应用启动完成时,创建UI线程,之后响应于目标动画的播放指令,游戏引擎静态库可以在UI线程中创建引擎动画视图,然后游戏引擎静态库可以创建一个独立于UI线程运行的渲染线程,并在该渲染线程中对目标动画的各帧动画图像按序进行渲染,进而游戏引擎静态库可以将渲染后的各帧动画图像在引擎动画视图中按序显示,实现目标动画的播放。之后游戏引擎静态库可以调用目标动画应用中原生框架端的功能接口实现对应的动画控制功能,原生框架端也可以调用游戏引擎静态库的功能接口实现对应的动画控制功能。
在本发明实施例中,目标动画应用中的游戏引擎静态库可以在UI线程之外,创建一个独立于UI线程运行的渲染线程,并可以在渲染线程中执行针对目标动画中各帧动画图像的渲染操作,而无需在UI线程中执行渲染操作,从而在用户界面中存在多个动画需要进行渲染时,多个渲染指令可以分别下达至多个渲染线程,并在多个渲染线程中分别进行动画渲染,如此,则无需UI线程对多个渲染指令进行响应,进而能够避免UI线程产生卡顿。进一步的,多个动画的渲染操作可以分别在多个渲染线程中同步执行,而无需在UI线程中依次执行,从而能够避免部分动画的动画图像渲染滞后,提高了动画播放的流畅性。另外,通过游戏引擎静态库与原生框架端相结合的方式进行动画控制,可以使目标动画应用兼具两者的控制功能,进而可以使动画界面兼具两者带来的展示效果。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述动画播放方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种动画播放方法、终端和计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (25)
1.一种动画播放方法,其特征在于,应用于安装有目标动画应用的终端,所述方法包括:
在所述目标动画应用启动完成时,所述目标动画应用中的游戏引擎静态库创建用户界面UI线程;
响应于目标动画的播放指令,所述游戏引擎静态库在所述UI线程中创建引擎动画视图;
所述游戏引擎静态库创建渲染线程;所述渲染线程独立于所述UI线程运行;
所述游戏引擎静态库在所述渲染线程中对所述目标动画的各帧动画图像按序进行渲染;
所述游戏引擎静态库将渲染后的所述各帧动画图像在所述引擎动画视图中按序显示,实现所述目标动画的播放。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在播放所述目标动画时,所述游戏引擎静态库接收针对第一接口的第一调用指令;所述第一接口为所述目标动画应用中的原生框架端中的功能接口;
响应于所述第一调用指令,所述游戏引擎静态库根据所述第一接口所作用的类的类名、所述第一接口对应的静态函数名以及所述第一接口实现功能所需的第一输入参数,调用所述第一接口;
所述原生框架端运行所述第一接口中的静态函数,以使所述静态函数根据所述第一输入参数,实现针对所述目标动画的第一控制功能。
3.根据权利要求2所述的方法,其特征在于,所述第一接口为所述原生框架端中目标原生控件对应的功能接口,所述原生框架端运行所述第一接口中的静态函数,以使所述静态函数根据所述第一输入参数,实现针对所述目标动画的第一控制功能,包括:
在当前的动画图像渲染完成时,所述原生框架端根据所述第一输入参数,创建原生动画视图;
所述原生框架端在所述原生动画视图中对所述目标原生控件进行渲染;
渲染后的所述目标原生控件对所述目标动画执行目标控制操作,以实现所述第一接口中的静态函数的运行。
4.根据权利要求3所述的方法,其特征在于,所述原生框架端和所述游戏引擎静态库均采用开放图形库OpenGL进行图像渲染,所述原生框架端在所述原生动画视图中对所述目标原生控件进行渲染之前,还包括:
所述原生框架端调用预置的游戏引擎暂停接口,以使所述游戏引擎静态库暂停运行。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述静态函数运行完毕之后,所述原生框架端接收针对第二接口的第二调用指令;所述第二接口为所述游戏引擎静态库中需要根据输入参数实现功能的任一功能接口;
响应于所述第二调用指令,所述原生框架端根据所述第二接口对应的直译式脚本语言JavaScript函数名以及所述第二接口实现功能所需的第二输入参数,调用所述第二接口;
所述游戏引擎静态库运行所述第二接口中的JavaScript函数,以使所述JavaScript函数根据所述第二输入参数,实现针对所述目标动画的第二控制功能。
6.根据权利要求5所述的方法,其特征在于,所述原生框架端和所述游戏引擎静态库均采用OpenGL进行图像渲染,所述响应于所述第二调用指令,所述原生框架端根据所述第二接口对应的直译式脚本语言JavaScript函数名以及所述第二接口实现功能所需的第二输入参数,调用所述第二接口之前,还包括:
所述原生框架端调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库恢复运行。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述静态函数运行完毕之后,所述原生框架端接收针对第三接口的第三调用指令;
响应于所述第三调用指令,所述原生框架端将针对所述第三接口的调用通知发送至所述游戏引擎静态库;
当所述游戏引擎静态库监听到所述调用通知时,调用所述第三接口;
所述游戏引擎静态库运行所述第三接口中的目标函数,以使所述目标函数实现针对所述目标动画的第三控制功能。
8.根据权利要求7所述的方法,其特征在于,所述原生框架端和所述游戏引擎静态库均采用OpenGL进行图像渲染,所述响应于所述第三调用指令,所述原生框架端将针对所述第三接口的调用通知发送至所述游戏引擎静态库之前,还包括:
所述原生框架端调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库恢复运行。
9.根据权利要求1所述的方法,其特征在于,所述在所述目标动画应用启动完成时,所述目标动画应用中的游戏引擎静态库创建UI线程之后,还包括:
原生框架端中预置的语音工具包采集用户语音信息;
所述语音工具包对所述用户语音信息进行语音识别,获得所述用户语音信息对应的动画控制指令;
响应于所述动画控制指令,所述游戏引擎静态库或所述原生框架端对至少一个预置动画执行预设控制操作;
其中,所述预设控制操作包括动画的开启操作和关闭操作、动画页面的大小控制操作、动画特效的触发操作中的至少一种。
10.根据权利要求1所述的方法,其特征在于,所述终端还安装有系统,所述在所述目标动画应用启动完成时,所述目标动画应用中的游戏引擎静态库创建UI线程之前,还包括:
所述系统响应于所述目标动画应用的启动指令,对所述目标动画应用中的游戏引擎静态库进行初始化,以使所述目标动画应用启动;
所述系统创建视图控制器;所述视图控制器中包括用于管理视图的各个接口;
相应的,所述响应于目标动画的播放指令,所述游戏引擎静态库在所述UI线程中创建引擎动画视图,包括:
响应于目标动画的播放指令,所述游戏引擎静态库调用预置的视图创建接口,以在所述UI线程中创建引擎动画视图;所述引擎动画视图为所述视图控制器的根视图或子视图。
11.根据权利要求10所述的方法,其特征在于,所述终端还安装有应用创建平台,所述终端系统响应于所述目标动画应用的启动指令,对预置的游戏引擎静态库进行初始化,以使所述目标动画应用启动之前,还包括:
所述应用创建平台获取游戏引擎包及应用文件;所述应用文件包括所述目标动画应用的脚本文件、资源文件和配置文件;
所述应用创建平台对所述游戏引擎包进行编译,获得游戏引擎静态库;
所述应用创建平台将所述游戏引擎静态库依赖的预置库文件添加至原生框架端工程中;
所述应用创建平台获取用于桥接所述游戏引擎静态库与原生框架端的接口文件;所述接口文件中包括所述游戏引擎静态库与所述原生框架端交互所需的各个接口;
所述应用创建平台将所述游戏引擎静态库、所述应用文件、所述接口文件添加至所述原生框架端工程中,获得目标动画应用工程;
所述应用创建平台对所述目标动画应用工程进行编译,以实现目标动画应用的创建。
12.根据权利要求1所述的方法,其特征在于,所述游戏引擎静态库为Cocos2d-JS引擎静态库。
13.一种终端,其特征在于,所述终端安装有目标动画应用,所述目标动画应用包括游戏引擎静态库;
所述游戏引擎静态库,用于在所述目标动画应用启动完成时,创建用户界面UI线程;
所述游戏引擎静态库,还用于响应于目标动画的播放指令,在所述UI线程中创建引擎动画视图;
所述游戏引擎静态库,还用于创建渲染线程;所述渲染线程独立于所述UI线程运行;
所述游戏引擎静态库,还用于在所述渲染线程中对所述目标动画的各帧动画图像按序进行渲染;
所述游戏引擎静态库,还用于将渲染后的所述各帧动画图像在所述引擎动画视图中按序显示,实现所述目标动画的播放。
14.根据权利要求13所述的终端,其特征在于,所述目标动画应用还包括原生框架端;
所述游戏引擎静态库,还用于响应于第一调用指令,根据第一接口所作用的类的类名、所述第一接口对应的静态函数名以及所述第一接口实现功能所需的第一输入参数,调用所述第一接口;
所述原生框架端,用于运行所述第一接口中的静态函数,以使所述静态函数根据所述第一输入参数,实现针对所述目标动画的第一控制功能。
15.根据权利要求14所述的终端,其特征在于,所述第一接口为所述原生框架端中目标原生控件对应的功能接口,所述原生框架端,还用于在当前的动画图像渲染完成时,根据所述第一输入参数,创建原生动画视图;
所述原生框架端,还用于在所述原生动画视图中对所述目标原生控件进行渲染;
渲染后的所述目标原生控件,用于对所述目标动画执行目标控制操作,以实现所述第一接口中的静态函数的运行。
16.根据权利要求15所述的终端,其特征在于,所述原生框架端和所述游戏引擎静态库均采用开放图形库OpenGL进行图像渲染,所述原生框架端,还用于调用预置的游戏引擎暂停接口,以使所述游戏引擎静态库暂停运行。
17.根据权利要求14所述的终端,其特征在于,所述原生框架端,还用于在所述静态函数运行完毕之后,接收针对第二接口的第二调用指令;所述第二接口为所述游戏引擎静态库中需要根据输入参数实现功能的任一功能接口;
所述原生框架端,还用于响应于所述第二调用指令,根据所述第二接口对应的直译式脚本语言JavaScript函数名以及所述第二接口实现功能所需的第二输入参数,调用所述第二接口;
所述游戏引擎静态库,还用于运行所述第二接口中的JavaScript函数,以使所述JavaScript函数根据所述第二输入参数,实现针对所述目标动画的第二控制功能。
18.根据权利要求17所述的终端,其特征在于,所述原生框架端和所述游戏引擎静态库均采用OpenGL进行图像渲染,所述原生框架端,还用于调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库恢复运行。
19.根据权利要求14所述的终端,其特征在于,所述原生框架端,还用于在所述静态函数运行完毕之后,接收针对第三接口的第三调用指令;
所述原生框架端,还用于响应于所述第三调用指令,将针对所述第三接口的调用通知发送至所述游戏引擎静态库;
所述游戏引擎静态库,还用于当监听到所述调用通知时,调用所述第三接口;
所述游戏引擎静态库,还用于运行所述第三接口中的目标函数,以使所述目标函数实现针对所述目标动画的第三控制功能。
20.根据权利要求19所述的终端,其特征在于,所述原生框架端和所述游戏引擎静态库均采用OpenGL进行图像渲染,所述原生框架端,还用于调用预置的游戏引擎恢复接口,以使所述游戏引擎静态库恢复运行。
21.根据权利要求14所述的终端,其特征在于,所述原生框架端包括预置的语音工具包,所述语音工具包,用于采集用户语音信息;
所述语音工具包,还用于对所述用户语音信息进行语音识别,获得所述用户语音信息对应的动画控制指令;
所述游戏引擎静态库或所述原生框架端,还用于响应于所述动画控制指令,对至少一个预置动画执行预设控制操作;
其中,所述预设控制操作包括动画的开启操作和关闭操作、动画页面的大小控制操作、动画特效的触发操作中的至少一种。
22.根据权利要求13所述的终端,其特征在于,所述终端还安装有系统,所述系统,用于响应于所述目标动画应用的启动指令,对所述目标动画应用中的游戏引擎静态库进行初始化,以使所述目标动画应用启动;
所述系统,还用于创建视图控制器;所述视图控制器中包括用于管理视图的各个接口;
相应的,所述游戏引擎静态库,还用于响应于目标动画的播放指令,调用预置的视图创建接口,以在所述UI线程中创建引擎动画视图;所述引擎动画视图为所述视图控制器的根视图或子视图。
23.根据权利要求22所述的终端,其特征在于,所述终端还安装有应用创建平台;
所述应用创建平台,用于获取游戏引擎包及应用文件;所述应用文件包括所述目标动画应用的脚本文件、资源文件和配置文件;
所述应用创建平台,还用于对所述游戏引擎包进行编译,获得游戏引擎静态库;
所述应用创建平台,还用于将所述游戏引擎静态库依赖的预置库文件添加至原生框架端工程中;
所述应用创建平台,还用于获取用于桥接所述游戏引擎静态库与原生框架端的接口文件;所述接口文件中包括所述游戏引擎静态库与所述原生框架端交互所需的各个接口;
所述应用创建平台,还用于将所述游戏引擎静态库、所述应用文件、所述接口文件添加至所述原生框架端工程中,获得目标动画应用工程;
所述应用创建平台,还用于对所述目标动画应用工程进行编译,以实现目标动画应用的创建。
24.根据权利要求13所述的终端,其特征在于,所述游戏引擎静态库为Cocos2d-JS引擎静态库。
25.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至12中任一项所述的动画播放方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811629400.3A CN109828791B (zh) | 2018-12-28 | 2018-12-28 | 一种动画播放方法、终端和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811629400.3A CN109828791B (zh) | 2018-12-28 | 2018-12-28 | 一种动画播放方法、终端和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109828791A CN109828791A (zh) | 2019-05-31 |
CN109828791B true CN109828791B (zh) | 2022-03-22 |
Family
ID=66860770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811629400.3A Active CN109828791B (zh) | 2018-12-28 | 2018-12-28 | 一种动画播放方法、终端和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109828791B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110658963B (zh) * | 2019-09-30 | 2021-04-06 | 上海沣沅星科技有限公司 | 人机交互界面的多屏互动系统、设备、介质、交互系统 |
CN113617022B (zh) * | 2021-08-09 | 2024-04-05 | 在线途游(北京)科技有限公司 | 一种加快游戏应用启动速度的方法及装置 |
CN115994007A (zh) * | 2021-10-18 | 2023-04-21 | 华为技术有限公司 | 动画效果显示方法及电子设备 |
CN114265659A (zh) * | 2021-12-27 | 2022-04-01 | 飞天诚信科技股份有限公司 | 一种iOS系统显示弹框的方法及装置 |
CN115035218B (zh) * | 2022-08-11 | 2022-11-01 | 湖南湘生网络信息有限公司 | 交互动画制作方法、装置、计算机设备和存储介质 |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103035003A (zh) * | 2012-12-11 | 2013-04-10 | 华为技术有限公司 | 一种实现增强现实的方法及装置 |
CN103413343A (zh) * | 2013-08-30 | 2013-11-27 | 广州市久邦数码科技有限公司 | 一种3d图像动画引擎 |
CN103605516A (zh) * | 2013-11-12 | 2014-02-26 | 国家电网公司 | 柔性Web展现框架模型架构设计方法 |
CN104077797A (zh) * | 2014-05-19 | 2014-10-01 | 无锡梵天信息技术股份有限公司 | 三维游戏动画系统 |
CN104102488A (zh) * | 2014-07-18 | 2014-10-15 | 无锡梵天信息技术股份有限公司 | 一种基于多线程并行化的3d引擎系统 |
CN104715500A (zh) * | 2015-03-26 | 2015-06-17 | 金陵科技学院 | 一种基于三维动画设计的3d动画制作开发系统 |
CN105094920A (zh) * | 2015-08-14 | 2015-11-25 | 网易(杭州)网络有限公司 | 一种游戏渲染方法和装置 |
CN105413176A (zh) * | 2015-11-10 | 2016-03-23 | 内蒙古工业大学 | 一种应用于游戏的3d引擎系统 |
CN106210883A (zh) * | 2016-08-11 | 2016-12-07 | 浙江大华技术股份有限公司 | 一种视频渲染的方法、设备 |
CN106354512A (zh) * | 2016-09-08 | 2017-01-25 | 广州华多网络科技有限公司 | 用户界面渲染方法及装置 |
CN106485788A (zh) * | 2016-10-21 | 2017-03-08 | 重庆虚拟实境科技有限公司 | 一种游戏引擎混合现实拍摄方法 |
CN106775811A (zh) * | 2016-11-17 | 2017-05-31 | Tcl集团股份有限公司 | 一种动画播放方法和装置 |
CN107248190A (zh) * | 2017-05-11 | 2017-10-13 | 珠海金山网络游戏科技有限公司 | 一种三维游戏引擎的场景图设计方法及系统 |
CN107357939A (zh) * | 2017-08-28 | 2017-11-17 | 荆门程远电子科技有限公司 | 一种移动三维虚拟地球系统的关键接口设计方法 |
CN107451066A (zh) * | 2017-08-22 | 2017-12-08 | 网易(杭州)网络有限公司 | 卡顿处理方法和装置、存储介质、终端 |
CN108364335A (zh) * | 2018-01-23 | 2018-08-03 | 腾讯科技(深圳)有限公司 | 一种动画绘制方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2012297524B2 (en) * | 2011-08-16 | 2017-07-20 | Destiny Software Productions Inc. | Script-based video rendering |
US20130055072A1 (en) * | 2011-08-24 | 2013-02-28 | Robert Douglas Arnold | Multi-Threaded Graphical Display System |
CN103325398B (zh) * | 2012-03-23 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 一种动画播放方法及装置 |
US20140070489A1 (en) * | 2012-09-11 | 2014-03-13 | Robert F. Spencer | Game, method of playing the same, and collapsible game board |
CN104866291A (zh) * | 2014-02-24 | 2015-08-26 | 上海连梦文化传播有限公司 | 一种基于Android的手机2D游戏引擎 |
US20150339006A1 (en) * | 2014-05-21 | 2015-11-26 | Facebook, Inc. | Asynchronous Preparation of Displayable Sections of a Graphical User Interface |
CN104267963A (zh) * | 2014-10-10 | 2015-01-07 | 重庆邮电大学 | 一种跨平台角色扮演网络游戏客户端引擎及建立方法 |
CN106407098B (zh) * | 2015-07-27 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 一种应用程序状态监测方法及装置 |
CN107193515B (zh) * | 2017-04-10 | 2023-03-14 | 腾讯科技(深圳)有限公司 | 动画显示流畅度的监控方法、装置及其设备 |
CN107368410B (zh) * | 2017-06-14 | 2021-02-19 | 腾讯科技(深圳)有限公司 | 游戏引擎的性能测试方法和装置、存储介质及电子装置 |
CN107398070B (zh) * | 2017-07-19 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 一种游戏画面的显示控制方法及装置、电子设备 |
CN108479067B (zh) * | 2018-04-12 | 2019-09-20 | 网易(杭州)网络有限公司 | 游戏画面的渲染方法和装置 |
-
2018
- 2018-12-28 CN CN201811629400.3A patent/CN109828791B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103035003A (zh) * | 2012-12-11 | 2013-04-10 | 华为技术有限公司 | 一种实现增强现实的方法及装置 |
CN103413343A (zh) * | 2013-08-30 | 2013-11-27 | 广州市久邦数码科技有限公司 | 一种3d图像动画引擎 |
CN103605516A (zh) * | 2013-11-12 | 2014-02-26 | 国家电网公司 | 柔性Web展现框架模型架构设计方法 |
CN104077797A (zh) * | 2014-05-19 | 2014-10-01 | 无锡梵天信息技术股份有限公司 | 三维游戏动画系统 |
CN104102488A (zh) * | 2014-07-18 | 2014-10-15 | 无锡梵天信息技术股份有限公司 | 一种基于多线程并行化的3d引擎系统 |
CN104715500A (zh) * | 2015-03-26 | 2015-06-17 | 金陵科技学院 | 一种基于三维动画设计的3d动画制作开发系统 |
CN105094920A (zh) * | 2015-08-14 | 2015-11-25 | 网易(杭州)网络有限公司 | 一种游戏渲染方法和装置 |
CN105413176A (zh) * | 2015-11-10 | 2016-03-23 | 内蒙古工业大学 | 一种应用于游戏的3d引擎系统 |
CN106210883A (zh) * | 2016-08-11 | 2016-12-07 | 浙江大华技术股份有限公司 | 一种视频渲染的方法、设备 |
CN106354512A (zh) * | 2016-09-08 | 2017-01-25 | 广州华多网络科技有限公司 | 用户界面渲染方法及装置 |
CN106485788A (zh) * | 2016-10-21 | 2017-03-08 | 重庆虚拟实境科技有限公司 | 一种游戏引擎混合现实拍摄方法 |
CN106775811A (zh) * | 2016-11-17 | 2017-05-31 | Tcl集团股份有限公司 | 一种动画播放方法和装置 |
CN107248190A (zh) * | 2017-05-11 | 2017-10-13 | 珠海金山网络游戏科技有限公司 | 一种三维游戏引擎的场景图设计方法及系统 |
CN107451066A (zh) * | 2017-08-22 | 2017-12-08 | 网易(杭州)网络有限公司 | 卡顿处理方法和装置、存储介质、终端 |
CN107357939A (zh) * | 2017-08-28 | 2017-11-17 | 荆门程远电子科技有限公司 | 一种移动三维虚拟地球系统的关键接口设计方法 |
CN108364335A (zh) * | 2018-01-23 | 2018-08-03 | 腾讯科技(深圳)有限公司 | 一种动画绘制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109828791A (zh) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109828791B (zh) | 一种动画播放方法、终端和计算机可读存储介质 | |
JP6111440B2 (ja) | ユーザインターフェースを符号化する方法 | |
US7561159B2 (en) | Control of animation timeline | |
CN107393013B (zh) | 虚拟漫游文件生成、显示方法、装置、介质、设备和系统 | |
CN107168780B (zh) | 虚拟现实场景的加载方法、设备及虚拟现实设备 | |
US11620784B2 (en) | Virtual scene display method and apparatus, and storage medium | |
CA2843152C (en) | Remotely preconfiguring a computing device | |
US20200349753A1 (en) | Method, device and storage medium for generating animation | |
CN107423049A (zh) | 实现在线编程的方法、浏览器和终端设备 | |
CN116302366B (zh) | 面向终端开发的xr应用开发系统与方法、设备及介质 | |
EP4120595A1 (en) | Data processing method and apparatus for virtual scene, and electronic device and storage medium | |
KR101831802B1 (ko) | 적어도 하나의 시퀀스에 대한 가상현실 컨텐츠 제작방법 및 장치 | |
Schiller et al. | Live programming of mobile apps in App Inventor | |
US20230336680A1 (en) | Simulated photographing special effect generation method and apparatus, device, and medium | |
Santos et al. | An event driven approach for integrating multi-sensory effects to interactive environments | |
US10303331B2 (en) | Live mobile application visual editor demo | |
Funk et al. | PULP scription: a DSL for mobile HTML5 game applications | |
CN116339737B (zh) | Xr应用编辑方法、设备及存储介质 | |
US8000952B2 (en) | Method and system for generating multiple path application simulations | |
CN117009029A (zh) | Xr应用与内容运行方法、设备及存储介质 | |
CN106325851A (zh) | 一种Android应用交互式远程协作方法 | |
Khundam | Storytelling platform for interactive digital content in virtual museum | |
Pleuss | Mml: A language for modeling interactive multimedia applications | |
Nagesh et al. | Cross-platform mobile application development | |
Pleuß et al. | Integrating authoring tools into model-driven development of interactive multimedia applications |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |