一种动画播放的方法和装置转让专利

申请号 : CN200910162732.X

文献号 : CN101615298B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄朝兴

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明公开了一种动画播放的方法和装置,该方法包括:获取动画中下一待播放帧的帧画面以及对应的初始坐标;获取所述帧画面的位置与原始帧画面位置的偏移量;根据所述偏移量对所述初始坐标进行修正,获取所述帧画面的实际坐标;在所述实际坐标显示所述帧画面。该装置包括:第一获取模块,用于获取动画中下一待播放帧的帧画面以及对应的初始坐标以及所述帧画面的位置与原始帧画面位置的偏移量;修正模块,用于根据所述第一获取模块获取的所述偏移量对所述初始坐标进行修正,获取所述帧画面的实际坐标;显示模块,用于在所述修正模块获取的所述实际坐标显示所述帧画面。通过本发明,节省帧画面存储时占用的内存空间,减少融合到画布时的计算消耗。

权利要求 :

1.一种动画播放的方法,其特征在于,包括:

切割动画序列中的原始帧画面,确定切割后的帧画面位置相对于切割前的原始帧画面位置的偏移量,存储切割后的帧画面和确定出的偏移量;

在播放动画序列时,获取动画序列中切割后的待播放帧画面以及对应的初始坐标,获取切割后的待播放帧画面的位置与该待播放帧画面的原始帧画面位置的偏移量,根据获取到的偏移量对所述初始坐标进行修正,得到该切割后的待播放帧画面的实际坐标,并在所述实际坐标显示切割后的待播放帧画面。

2.如权利要求1所述的方法,其特征在于,所述切割动画序列中的原始帧画面,包括:识别动画序列中的原始帧画面的非透明像素的位置;

根据所述非透明像素的位置的识别结果获取所述原始帧画面的空白区域和非空白区域,所述非空白区域为规则形状或非规则形状;

切断掉所述原始帧画面中的空白区域,得到切割后的帧画面。

3.如权利要求1所述的方法,其特征在于,所述确定切割后的帧画面位置相对于切割前的原始帧画面位置的偏移量,包括:确定切割后的帧画面位置相对于切割前的原始帧画面位置的横坐标偏移量和纵坐标偏移量;其中,所述横坐标偏移量为所述原始帧画面的左侧空白区域的宽度;所述纵坐标偏移量为所述原始帧画面的上侧空白区域的高度。

4.如权利要求1所述的方法,其特征在于,所述根据获取到的所述偏移量对所述初始坐标进行修正,具体为:对所述初始坐标和获取到的偏移量求和。

5.如权利要求1至4中任一项所述的方法,其特征在于,所述动画序列中的各原始帧画面为尺寸相等的帧画面。

6.一种动画播放的装置,其特征在于,包括:

切割模块,用于切割动画序列中的原始帧画面并存储;

第二获取模块,用于确定所述切割模块切割后的帧画面位置相对于切割前的原始帧画面位置的偏移量;

存储模块,用于存储所述第二获取模块确定出的所述偏移量;

第一获取模块,用于获取动画序列中切割后的待播放帧的帧画面以及对应的初始坐标,以及切割后的待播放帧画面的位置与该待播放帧的原始帧画面位置的偏移量;

修正模块,用于根据所述第一获取模块获取的所述偏移量对所述初始坐标进行修正,得到该切割后的待播放帧画面的实际坐标;

显示模块,用于在所述修正模块得到的所述实际坐标显示所述切割后的待播放帧画面。

7.如权利要求6所述的装置,其特征在于,所述切割模块包括:识别子模块,用于识别所述原始帧画面的非透明像素的位置;

获取子模块,用于根据所述识别子模块识别的所述非透明像素的位置的识别结果获取所述原始帧画面的空白区域和非空白区域,所述非空白区域为规则形状或非规则形状;

存储子模块,用于存储所述非空白区域。

8.如权利要求6所述的装置,其特征在于,所述第二获取模块具体用于,确定切割后的帧画面位置相对于切割前的原始帧画面位置的横坐标偏移量和纵坐标偏移量;其中,所述横坐标偏移量为所述原始帧画面的左侧空白区域的宽度;所述纵坐标偏移量为所述原始帧画面的上侧空白区域的高度。

说明书 :

一种动画播放的方法和装置

技术领域

[0001] 本发明涉及互联网技术领域,尤其涉及一种动画播放的方法和装置。

背景技术

[0002] 随着计算机技术的发展,动画制作与应用得到了迅猛的发展,使得动画的制作从纯手工绘制到手工绘制与计算机辅助绘制。而网络技术的发展更加推动了动画制作的发展与应用,借助于网络平台,动画被大量运用于各种网页制作,各种聊天工具丰富的动画功能以及各种游戏(尤其是网络游戏)的制作中。
[0003] 动画是由一系列的静态帧组成的帧序列,帧是进行动画制作的最基本的单位,每一个动画都是由很多个帧构成的,用于显示每一个静态画面,在时间轴上的每一帧包含需要显示的所有内容,例如:图形、声音、各种素材和其他多种对象。当要对动画进行播放时,首先将帧序列进行存储,然后将帧序列中的每一个帧按照时间序列逐一显示,从而形成连续的动画效果。
[0004] 现有技术中,对每个帧进行存储时,每个帧的尺寸是一样。当对一个内容较多,规模较大的动画进行存储和播放时,占用了大量的内存以及CPU(Center Processing Unit,中央处理器)计算资源。
[0005] 在实现本发明的过程中,发明人发现现有技术至少存在如下问题:
[0006] 现有技术,每一帧的尺寸是一样,其实并不是每一帧画面内容都完全布满了画面,往往有许多空白区域,而这些空白区域不仅占用内存,而且在动画显示时和场景融合的计算也消耗CPU计算资源。

发明内容

[0007] 本发明提供了一种动画播放的方法和装置,用于对帧画面的坐标进行修正后显示帧画面,节省帧画面存储时占用的内存空间,减少帧画面显示时融合到画布的计算消耗。
[0008] 本发明提供了一种动画播放的方法,包括:
[0009] 获取动画中下一待播放帧的帧画面以及对应的初始坐标;
[0010] 获取所述帧画面的位置与原始帧画面位置的偏移量;
[0011] 根据所述偏移量对所述初始坐标进行修正,获取所述帧画面的实际坐标;
[0012] 在所述实际坐标显示所述帧画面。
[0013] 所述获取下一待播放帧的帧画面以及对应的初始坐标之前,包括:
[0014] 切割原始帧画面,获得所述帧画面;
[0015] 获取所述帧画面位置相对于所述原始帧画面位置的偏移量;
[0016] 存储所述帧画面和所述偏移量。
[0017] 所述切割原始帧画面,获得所述帧画面包括:
[0018] 识别所述原始帧画面的非透明像素的位置;
[0019] 根据所述非透明像素的位置的识别结果获取所述原始帧画面的空白区域和非空白区域,所述非空白区域为规则形状或非规则形状;
[0020] 存储所述非空白区域,获得所述帧画面。
[0021] 所述获取所述帧画面位置相对于所述原始帧画面位置的偏移量为获取所述帧画面位置相对于所述原始帧画面位置的左上方偏移量,包括:
[0022] 获取所述帧画面位置相对于所述原始帧画面位置的横坐标偏移量和纵坐标偏移量;
[0023] 所述获取所述横坐标偏移量具体为:获取所述原始帧画面的左侧空白区域,所述空白区域的宽度为所述横坐标偏移量;
[0024] 所述获取所述纵坐标偏移量具体为:获取所述原始帧画面的上侧空白区域,所述空白区域的高度为所述纵坐标偏移量。
[0025] 包括:
[0026] 所述根据所述偏移量对所述初始坐标进行修正,获取所述帧画面的实际坐标为对所述初始坐标和所述偏移量求和。
[0027] 所述原始帧画面为尺寸相等的帧画面。
[0028] 本发明提供了一种动画播放的装置,包括:
[0029] 第一获取模块,用于获取动画中下一待播放帧的帧画面以及对应的初始坐标以及所述帧画面的位置与原始帧画面位置的偏移量;
[0030] 修正模块,用于根据所述第一获取模块获取的所述偏移量对所述初始坐标进行修正,获取所述帧画面的实际坐标;
[0031] 显示模块,用于在所述修正模块获取的所述实际坐标显示所述帧画面。
[0032] 还包括:
[0033] 切割模块,用于切割原始帧画面,获得所述帧画面;
[0034] 第二获取模块,用于获取所述切割模块获取的所述帧画面位置相对于所述原始帧画面位置的偏移量;
[0035] 存储模块,用于存储所述切割模块获取的帧画面和所述第二获取模块获取的所述偏移量。
[0036] 所述切割模块包括:
[0037] 识别子模块,用于识别所述原始帧画面的非透明像素的位置;
[0038] 获取子模块,用于根据所述识别子模块识别的所述非透明像素的位置的识别结果获取所述原始帧画面的空白区域和非空白区域,所述非空白区域为规则形状或非规则形状;
[0039] 存储子模块,用于存储所述非空白区域,获得所述帧画面。
[0040] 所述第二获取模块具体用于获取所述帧画面位置相对于所述原始帧画面位置的左上方偏移量,包括:
[0041] 获取所述帧画面位置相对于所述原始帧画面位置的横坐标偏移量和纵坐标偏移量;
[0042] 所述获取所述横坐标偏移量具体为:获取所述原始帧画面的左侧空白区域,所述空白区域的宽度为所述横坐标偏移量;
[0043] 所述获取所述纵坐标偏移量具体为:获取所述原始帧画面的上侧空白区域,所述空白区域的高度为所述纵坐标偏移量。
[0044] 与现有技术相比,本发明具有以下优点:
[0045] 在播放动画时,通过帧画面的实际坐标,修正角色变量在画布中的位置,不但节省了帧画面存储时占用的内存空间,同时减少了帧画面显示时融合到画布的计算消耗。

附图说明

[0046] 为了更清楚地说明本发明或现有技术中的技术方案,下面将对本发明或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0047] 图1本发明实施例中一种动画播放方法流程图;
[0048] 图2本发明实施例中一种动画存储方法流程图;
[0049] 图3本发明实施例中原始帧画面区域示意图;
[0050] 图4本发明实施例中原始帧画面切割范围示意图;
[0051] 图5本发明实施例中一种动画播放方法流程图;
[0052] 图6本发明实施例中切割后帧画面相对于原始帧画面位置偏移示意图;
[0053] 图7本发明实施例中切割后帧画面相对于原始帧画面位置偏移示意图;
[0054] 图8本发明实施例中一种动画播放方法流程图;
[0055] 图9本发明实施例中多帧画面切割前后对比示意图;
[0056] 图10本发明实施例中一种动画播放装置结构示意图;
[0057] 图11本发明实施例中一种动画播放装置结构示意图。

具体实施方式

[0058] 本发明提供的技术方案中,其主要技术方案为:获取下一待播放帧的帧画面以及对应的初始坐标;获取所述帧画面的位置与原始帧画面位置的偏移量;根据所述偏移量对所述初始坐标进行修正,获取所述帧画面的实际坐标;在所述实际坐标显示所述帧画面。
[0059] 下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0060] 本发明实施例提供一种动画播放的方法,如图1所示,具体包括以下步骤:
[0061] 步骤101、获取动画中下一待播放帧的帧画面以及对应的初始坐标。
[0062] 步骤102、获取帧画面的位置与原始帧画面位置的偏移量。
[0063] 步骤103、根据偏移量对初始坐标进行修正,获取帧画面的实际坐标。
[0064] 步骤104、在实际坐标显示所述帧画面。
[0065] 本发明实施例通过在播放时获取帧画面的实际坐标,修正角色变量在画布中的位置,不但节省了帧画面存储时占用的内存空间,同时减少了帧画面显示时融合到画布的计算消耗。
[0066] 动画是由一系列的静态帧组成的帧序列,按照时间序列逐帧呈现而成的。每个帧画面预先存储在内存中,当播放动画时,将该帧序列中的每个帧逐一导入到动画制作软件中,再将每个帧画面连续播放出来。当每秒连续播放24帧时,人的肉眼是分辨不出每一个帧画面的,从而呈现的是连续的动画效果。
[0067] 角色动画是指角色变量在一个大的画布中或者画面场景中运动。其中角色变量对应了两个数据,一个数据为该角色变量的帧画面数据,该帧画面数据为一个矩阵形式的位图,用于呈现该角色变量的静态画面;另一个数据为该角色变量对应的逻辑坐标,该坐标为该角色变量在画布上进行移动时对应的坐标。由上述可知,角色动画的每个静态画面由帧画面完成,角色动画中角色变量的动作由连续播放的帧完成,角色动画中的角色变量相对于画布的位置移动由角色变量的逻辑坐标组合完成。
[0068] 例如:一个角色动画所要呈现的画面是一个主人领着一只小狗在公园里散步。主人领着小狗在公园里散步时,对应的每个瞬间的静态画面由该角色动画的帧画面完成;主人领着小狗散步的动态动作由连续播放上述的帧画面完成,但此时主人和小狗相对于画布的位置是不变的,仅是进行原地的散步;主人领着小狗在公园里散步而产生的位置变换则由该角色动画的角色变量的逻辑坐标的变换完成,一系列的逻辑坐标形成运动的轨迹,从而产生角色变量的位置变换。
[0069] 基于上述分析,本发明的实施例中提供了一种动画播放的方法,其主要技术方案在于:
[0070] 该方法主要包括两个步骤:(1)对原始帧画面进行切割,并存储切割后帧画面以及切割后帧画面位置相对于原始帧画面位置的偏移量。(2)根据存储的偏移量对切割后帧画面对应的初始坐标进行修正,获取该切割后帧画面对应的实际坐标,并在该实际坐标处显示该切割后帧画面,通过连续地替换当前显示的切割后帧画面实现动画的播放。
[0071] 以下首先对上述步骤(1)中所述的切割原始帧画面并存储该帧画面以及对应的偏移量进行描述。具体的,获得的下一待播放帧的帧画面需要预先经过帧画面切割处理并进行相应的存储,下述流程提供一种动画存储的方法,存储帧画面时,对帧画面的空白区域进行切割,用切割后帧画面替换原始帧画面进行存储,如图2所示,具体包括以下步骤:
[0072] 步骤201、获取原始帧画面。
[0073] 具体的,获取未进行空白区域切割的帧画面,其对应的帧画面数据为{frame1},该帧画面数据为一个矩阵形式的位图,用于呈现该角色变量的静态画面,此时每一个帧画面的大小是一样。
[0074] 本流程中以所获取的原始帧画面所覆盖区域的横坐标为(X11,X12),纵坐标为(Y11,Y12)为例进行说明,具体如图3所示。
[0075] 步骤202、切割原始帧画面。
[0076] 在步骤201中所获取的原始帧画面中,由于未进行空白区域切割,每一个帧画面的大小是一样,但其实并不是每一个原始帧画面内容完全布满了整个画布,往往有许多空白区域。而这些空白区域不仅占用内存,而且在动画显示和场景融合计算时消耗CPU计算资源。因此需要将原始帧画面的空白区域切割掉,减小每个帧画面对内存的占用以及计算资源。
[0077] 具体的,切割掉帧画面的空白区域,如图4所示,包括以下步骤:
[0078] a)识别原始帧画面上下左右四边的非透明像素。
[0079] b)获取上述原始帧画面上下两边的非透明像素的纵轴坐标Y21和Y22,其中Y21<Y22;以及上述帧画面左右两边的非透明像素的横轴坐标X21和X22,其中X21<X22。
[0080] c)计算切割后帧画面位置相对于原始帧画面位置的左上方偏移量。
[0081] 原始帧画面进行切割后所得的非空白区域为切割后帧画面。非空白区域可为规则形状或非规则形状,优选地,本发明实施例中以非空白区域为矩形为例进行说明。
[0082] 所以,上述步骤中获得的非空白区域为由X21=0,X22=0,Y21=0以及Y22=0四条直线所围成;
[0083] 为了节约存储空间,优选地,本发明实施例中将切割后帧画面向左上方偏移,直至与原始帧画面的左上方重合。此时,左上方偏移量为fX=X21-X11,fY=Y12-Y22,其中fX为该帧画面横轴的偏移量,fY为该帧画面纵轴的偏移量,其区域为图4中阴影部分所示。
[0084] 需要说明的是,本发明实施例中切割后帧画面的偏移量采用切割后帧画面位置相对于原始帧画面位置的左上方偏移量,仅是一种优选的实施方式。凡是可以体现切割后帧画面相对于切割前的帧画面的位置移动的参量均可以作为偏移量,其中以节约存储空间的为优选。
[0085] 步骤203、存储切割后帧画面以及切割后帧画面位置相对于原始帧画面位置的偏移量。
[0086] 具体的,存储切割后帧画面以及切割后帧画面位置相对于原始帧画面位置左上方偏移量包括以下步骤:
[0087] a)根据步骤202所获得的切割后帧画面,将该切割后帧画面作为新的帧画面进行存储,替代原始帧画面,该切割后帧画面对应的切割后帧画面数据为{frame 1’}。
[0088] b)存储所获得的切割后帧画面位置相对于原始帧画面位置的左上方偏移量与切割后帧画面对应的切割后帧画面数据{frame 1’},其存储形式为{frame 1’,fX,fY}。此时,由于帧画面进行了空白区域的切割,所以此时每个帧画面尺寸大小不同。
[0089] 对应上述步骤(2),本发明实施例提供一种动画播放的方法,对播放时获取帧画面的实际坐标,修正角色变量在画布中的位置进行描述,如图5所示,具体包括以下步骤:
[0090] 步骤501、获取下一待播放帧的帧画面对应的角色变量的初始坐标。
[0091] 角色变量的初始坐标是该角色变量在画布上进行移动时对应的坐标。此时将该角色变量看做一个点,获取该角色变量的初始坐标为(rX,rY),具体如图6所示。图中,为了清晰,用圆圈在画布中的位置代替该角色变量作为点在画布中的位置。
[0092] 需要说明的是,本发明实施例中该角色变量与画布的相对位置只是一种优选实施方式,在实际的角色动画中,该角色变量可以位于画布上的任意位置;将角色变量看做一个点只是一种优选实施方式,便于说明及显示,但并不限于此,可以选择该角色变量对应的帧画面上的任一点为基准进行计算和显示。
[0093] 步骤502、获取下一待播放帧的帧画面数据。
[0094] 本流程实施例中下一待播放帧的帧画面数据为切割掉空白区域后的帧画面,其数据为{frame’1},并携带用于修正该帧画面对应的初始坐标的左上方偏移量{fX,fY}。
[0095] 步骤503、计算该帧画面的实际坐标。
[0096] 由于在步骤501中所获取的为下一待播放帧的帧画面对应的角色变量的初始坐标,为该角色变量对应的帧画面未进行空白区域切割时,该角色变量在画布上对应的坐标。而步骤502中所获取的下一待播放帧的帧画面数据为切割掉空白区域后的帧画面数据。所以,如果直接以该角色变量的初始坐标输出对应的帧画面,则会产生位置偏差,偏差的大小即为该帧画面进行空白区域切割时所得的切割后帧画面左上方偏移量,具体如图6所示,其中,阴影部分为左上方偏移量。将图6中的局部画面放大,得到如图7所示的画面,将图
7和图3对比可知,此时该角色变量偏离了初始位置。因此,需要根据该角色变量的初始坐标以及该角色变量的帧画面数据中所携带的的左上方偏移量计算该帧画面的实际坐标。
[0097] 具体的,计算该帧画面的实际坐标为:
[0098] objroleView.rXa=objroleView.rX+objframe.fx;
[0099] objroleView.rYa=objroleView.rY+objframe.fy;
[0100] 其中,objroleView为该角色变量;objroleView.rX和objroleView.rY分别为该角色变量的初始横坐标和纵坐标;objframe.fx和objframe.fy分别为该角色变量的帧画面进行空白区域切割时所得的横纵坐标的左上方偏移量;objroleView.rXa和objroleView.rYa为该角色变量的实际坐标。
[0101] 步骤504、替换当前显示帧画面数据。
[0102] 具体的,替换帧画面的显示数据为:用下一待播放帧的帧画面数据替换当前显示帧画面数据,在该角色变量的实际坐标处进行帧画面显示,即:
[0103] objroleView.data=objframe.frame。
[0104] 其中,objframe.frame为下一待播放帧的帧画面数据,该帧画面数据为步骤502中所获取的帧画面数据为帧画面本身的数据。
[0105] 当存储时,通过对帧画面的空白区域进行切割,获得切割后帧画面数据,从而减小内存的占用;当显示时,通过计算角色变量的实际坐标,还原该角色变量初始位置,从而准确地显示该帧画面;并且由于帧画面的显示面积变小,减少了该帧画面融合到画布的计算消耗。
[0106] 本发明实施例通过在播放时获取帧画面的实际坐标,修正角色变量在画布中的位置,不但节省了帧画面存储时占用的内存空间,同时减少了帧画面显示时融合到画布的计算消耗。
[0107] 本发明实施例提供一种动画播放的方法,其中将一个完整的动画序列进行切割存储,并在播放时进行修正,如图8所示,具体包括以下步骤:
[0108] 步骤801、获取动画序列中的第一帧画面。
[0109] 动画是由一个帧序列连续播放形成的,一个帧序列由很多个帧组成,每个帧画面数据是矩阵形式的位图,并且每个帧的尺寸是一样大的。本发明实施例中以本动画序列中共由4个帧组成,并且每个帧的大小相同,为常规大小。该动画序列完成的动作为该动画角色左转弯,先前走。
[0110] 首先,获取该动画序列中的第一帧,该帧的大小为常规大小,其帧画面数据为{frame 2},如图3所示。
[0111] 步骤802、切割原始帧画面。
[0112] 在步骤801中所获取的第一帧画面,由于未进行空白区域切割,其大小为120*120。但通过对图3的观察可知,该帧画面内容完全布满了整个画布,在画面内容的上下左右都有许多空白区域。由于将这些空白区域进行存储,占用了大量的内存;而且由于画面较大,在动画显示和场景融合计算时,消耗大量的CPU计算资源。因此需要将该帧画面的空白区域切割掉,减小该帧画面对内存的占用以及计算资源。
[0113] 具体的,切割掉帧画面的空白区域的具体步骤如上述步骤202所述,获得切割后第一帧画面,该帧画面数为{frame 2’},以及切割后第一帧画面相对于切割前第一帧画面的偏移量{fX2,fY2}。
[0114] 步骤803、存储切割后帧第一帧画面以及切割后第一帧画面位置相对于原始帧画面位置的偏移量。
[0115] 具体的,存储切割后帧第一帧画面以及切割后第一帧帧画面位置相对于切割前第一帧帧画面位置左上方偏移量包括以下步骤:
[0116] a)根据步骤802所获得的切割后第一帧画面,将该切割后第一帧画面作为新的帧画面进行存储,替代步骤801中所获取的切割前第一帧画面,该切割后第一帧画面对应的切割后第一帧画面数据为{frame 2’}。
[0117] b)存储所获得的切割后第一帧画面位置相对于切割前第一帧画面位置的左上方偏移量{fX2,fY2}与切割后第一帧画面对应的切割后帧画面数据{frame2’},其存储形式为{frame 2’,fX2,fY2}。此时,第一帧画面由于进行了空白区域的切割,所以此时第一帧画面尺寸不再是常规大小,而是小于常规大小。
[0118] 步骤804、将该动画序列中的剩余帧进行与第一帧同样的空白区域切割处理,得到处理后的该帧序列中各个帧画面以及对应的数据,第二帧切割后的数据为{frame 3’,fx3,fy3},第三帧切割后的数据为{frame 4’,fx4,fy4},第四帧切割后的数据为{frame 5’,fx5,fy5}}。
[0119] 此时,切割前帧画面与切割后帧画面如图9所示。由图9可知,通过空白区域的切割,节省的大量的内存空间。
[0120] 步骤805、获取待播放动画的切割后第一帧画面对应的角色变量的初始坐标。
[0121] 角色变量的初始坐标是该角色变量在画布上进行移动时对应的坐标。此时将该角色变量看做一个点,获取该角色变量的初始坐标为(rX1,rY2)。
[0122] 需要说明的是,本发明实施例中该角色变量与画布的相对位置只是一种优选实施方式,在实际的角色动画中,该角色变量可以位于画布上的任意位置;将角色变量看做一个点只是一种优选实施方式,便于说明及显示,但并不限于此,可以选择该角色变量对应的帧画面上的任一点为基准进行计算和显示。
[0123] 步骤806、获取待播放动画的切割后第一帧的帧画面数据。
[0124] 获取待播放动画的切割后第一帧的帧画面数据{frame’2},并携带用于修正该帧画面对应的初始坐标的左上方偏移量{fX2,fY2}。
[0125] 步骤807、计算该帧画面的实际坐标。
[0126] 步骤805中所获取的为待播放动画的切割后第一帧的帧画面对应的角色变量的初始坐标,为该角色变量对应的帧画面未进行空白区域切割时,该角色变量在画布上对应的坐标。而步骤806中所获取的待播放动画的切割后第一帧的帧画面数据为切割掉空白区域后的帧画面数据。根据该角色变量的初始坐标以及该角色变量的切割后第一帧的帧画面数据中所携带的的左上方偏移量计算第一帧画面的实际坐标。
[0127] 具体的,计算第一帧画面的实际坐标为:
[0128] objroleView.rXa2=objroleView.rX2+objframe.fx2;
[0129] objroleView.rYa2=objroleView.rY2+objframe.fy2;
[0130] 其中,objroleView为该角色变量;objroleView.rX2和objroleView.rY2分别为该角色变量的初始横坐标和纵坐标;objframe.fx2和objframe.fy2分别为该角色变量的帧画面进行空白区域切割时所得的横纵坐标的左上方偏移量;objroleView.rXa2和objroleView.rYa2为该角色变量的实际坐标。
[0131] 此时,由于切割后第一帧画面的显示面积变小,因此减少了在播放时与画面融合的计算。
[0132] 步骤808、播放切割后第一帧画面。
[0133] 此时,完成了对第一帧进行修正与播放。
[0134] 步骤809、将该动画序列中剩余帧通过进行与第一帧相同的播放处理,并替换当前播放帧,完成该动画的播放。
[0135] 本发明实施例通过在播放时获取帧画面的实际坐标,修正角色变量在画布中的位置,不但节省了帧画面存储时占用的内存空间,同时减少了帧画面显示时融合到画布的计算消耗。
[0136] 本发明实施例提供一种动画播放的装置10,如图10所示,包括:
[0137] 第一获取模块101,用于获取动画中下一待播放帧的帧画面以及对应的初始坐标以及帧画面的位置与原始帧画面位置的偏移量。
[0138] 其中,下一待播放帧的帧画面为经过切割处理的帧画面,优选地,所述切割处理步骤如下:
[0139] 1)切割原始帧画面,获得帧画面。
[0140] 优选地,识别原始帧画面的非透明像素的位置;获取原始帧画面的空白区域和非空白区域;存储非空白区域,获得帧画面。
[0141] 2)获取帧画面位置相对于原始帧画面位置的偏移量。
[0142] 3)存储帧画面和偏移量。
[0143] 修正模块102,用于根据第一获取模块101获取的偏移量对初始坐标进行修正,获取帧画面的实际坐标。
[0144] 显示模块103,用于在修正模块102获取的实际坐标显示帧画面。
[0145] 上述步骤完成了一个帧画面的显示,对于一个完整的动画,对其所有的帧画面进行同样处理,并用下一待播放帧的帧画面做上述同样处理后,替换当前显示帧画面,完成一个动画的播放。
[0146] 本发明实施例通过在播放时获取帧画面的实际坐标,修正角色变量在画布中的位置,不但节省了帧画面存储时占用的内存空间,同时减少了帧画面显示时融合到画布的计算消耗。
[0147] 本发明实施例提供一种动画播放的装置11,如图11所示,包括:
[0148] 第一获取模块101,用于获取动画中下一待播放帧的帧画面以及对应的初始坐标以及帧画面的位置与原始帧画面位置的偏移量。
[0149] 修正模块102,用于根据第一获取模块101获取的偏移量对初始坐标进行修正,获取帧画面的实际坐标。
[0150] 显示模块103,用于在修正模块102获取的实际坐标显示帧画面。
[0151] 还包括:
[0152] 切割模块104,用于切割原始帧画面,获得帧画面。
[0153] 第二获取模块105,用于获取切割模块104获取的帧画面位置相对于原始帧画面位置的偏移量。
[0154] 存储模块106,用于存储切割模块104获取的帧画面和第二获取模块105获取的偏移量。
[0155] 切割模块104包括:
[0156] 识别子模块1041,用于识别原始帧画面的非透明像素的位置。
[0157] 获取子模块1042,用于根据识别子模块1041识别的非透明像素的位置的识别结果获取原始帧画面的空白区域和非空白区域,非空白区域为规则形状或非规则形状。
[0158] 存储子模块1043,用于存储非空白区域,获得帧画面。
[0159] 第二获取模块105具体用于获取帧画面位置相对于原始帧画面位置的左上方偏移量,包括:
[0160] 获取帧画面位置相对于原始帧画面位置的横坐标偏移量和纵坐标偏移量。
[0161] 获取横坐标偏移量具体为:获取原始帧画面的左侧空白区域,空白区域的宽度为横坐标偏移量;
[0162] 获取纵坐标偏移量具体为:获取原始帧画面的上侧空白区域,空白区域的高度为纵坐标偏移量。
[0163] 本发明实施例通过在播放时获取帧画面的实际坐标,修正角色变量在画布中的位置,不但节省了帧画面存储时占用的内存空间,同时减少了帧画面显示时融合到画布的计算消耗。
[0164] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0165] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
[0166] 本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以集成于一体,也可以分离部署;可以合并为一个模块,也可以进一步拆分成多个子模块。
[0167] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0168] 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。