一种显示弹幕信息的方法和系统
技术领域
本发明涉及弹幕显示技术,更具体地,涉及显示弹幕信息的方法和系统。
背景技术
现有技术中,弹幕信息是以文本结合滤镜的方式来显示,其中文本用来展示弹幕的内容、字体大小、颜色等信息,滤镜则可以给单调的文本信息增加各种特殊效果,例如颜色的渐变效果、雾化效果等等。
但是,这种显示方式在弹幕量大的时候效率就会变低,因为滤镜会占用CPU资源,所以当弹幕量增大后,CPU资源就会被大量消耗,此时,给用户的直观感受就是掉帧,也就是有明显的卡顿现象出现。
位图图像(bitmap),亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。
发明内容
本发明提供一种克服上述问题或者至少部分地解决上述问题的显示弹幕信息的方法和系统。
根据本发明的一个方面,提供一种显示弹幕信息的方法,包括:
S1、对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;
S2、若存在,则将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示。
根据本发明的另一个方面,还提供一种显示弹幕信息的系统,包括:
检索装置,用于对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;
显示装置,用于当弹幕字典中存在与该待显示的弹幕信息对应的位图化弹幕信息时,将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示。
本申请提出一种显示弹幕信息的方法和系统,通过将传统的文本加滤镜形式的弹幕形式转换为位图的形式,由于在Flash中,对位图的操作都是不消耗CPU的,因此节省了对CPU的消耗,降低了显示弹幕出现卡断的发生机率,并且将一定数量的位图化弹幕信息存储在弹幕字典中,能够在一定程度上缓解弹幕高峰期的压力,最后,同一屏幕下位图的显示数量要比普通文本加滤镜的显示数量要多,使用户能够在相同时间内浏览更多数量的弹幕信息。
附图说明
图1为本发明实施例的一种显示弹幕信息的方法的流程图;
图2为本发明实施例的另一种显示弹幕信息的方法的流程图;
图3为本发明实施例的再一种显示弹幕信息的方法的流程图;
图4为本发明实施例的显示弹幕信息的方法的总流程图;
图5为本发明实施例的一种显示弹幕信息的系统的结构框图;
图6为本发明实施例的另一种显示弹幕信息的系统的结构框图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
现有技术中,弹幕信息是以文本结合滤镜的方式来显示,其中文本用来展示弹幕的内容、字体大小、颜色等信息,滤镜则可以给单调的文本信息增加各种特殊效果,例如颜色的渐变效果、雾化效果等等。
但是,这种显示方式在弹幕量大的时候效率就会变低,因为滤镜会占用CPU资源,所以当弹幕量增大后,CPU资源就会被大量消耗,此时,给用户的直观感受就是掉帧,也就是有明显的卡顿现象出现。
为了克服上述问题,本发明实施例提供了一种显示弹幕信息的方法,如图1所示,包括:
101、对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;
102、若存在,则将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示。
位图化弹幕信息就是以位图的形式绘制的弹幕信息,例如,某一条待显示的弹幕信息为阿拉伯数字组成的“666”,位图化弹幕信息就是以像素组成的“666”,通过检索弹幕字典中是否存在与阿拉伯数字“666”对应的像素组成的“666”,当存在时,说明之前创建过这个位图化弹幕信息,于是就可以将位图化弹幕信息:由像素组成的“666”进行展示,十分方便。
本实施例通过将传统的文本加滤镜形式的弹幕形式转换为位图的形式,由于在Flash中,对位图的操作都是不消耗CPU的,因此节省了对CPU的消耗,降低了显示弹幕出现卡断的发生机率,并且将一定数量的位图化弹幕信息存储在弹幕字典中,能够在一定程度上缓解弹幕高峰期的压力,最后,同一屏幕下位图的显示数量要比普通文本加滤镜的显示数量要多,使用户能够在相同时间内浏览更多数量的弹幕信息。
本发明实施例提供了另一种显示弹幕信息的方法,如图2所述,本方法包括:
201、创建弹幕字典,所述弹幕字典以键值对的形式存储弹幕信息以及与弹幕信息对应的位图化弹幕信息;
202、对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;
203、若存在,则将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示。
所谓键值对形式,就是指一个键对应一个值的形式。键,就是值的编号,值,就是存储的数据。在本实施例中,键即为弹幕信息,例如汉字“主播好厉害”,值即为位图化弹幕信息,
需要注意的是,在flash语言中,很多类型都可以作为键,因此本发明并不对键的具体类型进行限制,例如,也可以将弹幕信息对应的编号ID,设置为键。
需要注意的是,本发明并不限制弹幕字典创建的地点是在服务器中还是本地。
在一个实施例中,本发明还包括:
若不存在,则在所述弹幕字典中创建并保存与该待显示的弹幕信息对应的位图化弹幕信息;以及
将保存的该待显示的弹幕信息对应的位图化弹幕信息进行显示。
显然,如果没有在弹幕字典中发现与待显示的弹幕信息对应的位图化弹幕信息,说明之前没有在弹幕字典中创建过这个弹幕信息的位图化弹幕信息,那么就需要先在创建弹幕字典中创建这个位图化弹幕信息,再进行显示。
在一个实施例中,所述弹幕字典还存储每个位图化弹幕信息的显示次数。具体地,每个位图化弹幕信息的显示次数也包含在值中,也就是说,值包含两个属性,一个是位图化弹幕信息,一个是队员每个位图化弹幕信息的显示次数。
需要注意的是,由于弹幕信息如同人说的话语,从数量上可以说上将没有极限,但不同的话每天说的次数肯定不同,结合弹幕来说,发送“666”的次数属于最热门、显示次数最多的弹幕信息,其他例如“主播查房了”、“主播再来一个”也属于非常热门的弹幕信息,因此,通过记录每个的弹幕信息的显示次数,就可以知道不同时期的网络流行语,并且,由于弹幕字典不可能无限制的保存弹幕信息,通过记录不同弹幕信息的显示次数,就可以实现只保存一定热度以上的词汇,减少弹幕字典的更新频率的目的。
在一个实施例中,在所述弹幕字典中创建并保存与该待显示的弹幕信息对应的位图化弹幕信息的步骤之前,本方法还包括:
检查并确定所述弹幕字典中位图化弹幕信息的数量未超过上限。
需要注意的是,为了防止弹幕字典中位图化弹幕信息的保存数量超过上限,需要在创建新的位图化弹幕信息前检查弹幕字典中的位图化弹幕信息的数量,如果没有超过上限,就直接进行创建。上限可以根据具体情况设置为任何合理的值,例如500。
在一个实施例中,所述在所述弹幕字典中创建并保存与该待显示的弹幕信息对应的位图化弹幕信息,之前还包括:
检查并确定所述弹幕字典位图化弹幕信息的数量已达到上限,则将显示次数最低的位图化弹幕信息从所述弹幕字典中删除。
需要注意的是,为了方便后续的删除操作,本实施例提供了再一种显示弹幕的方法,如图3所示,包括:
301、创建弹幕字典,所述弹幕字典以键值对的形式存储弹幕信息以及与弹幕信息对应的位图化弹幕信息;
302、对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;
303、若存在,则将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示;
304、对显示的位图化弹幕信息的显示次数进行更新。
对象,作为计算机领域中最基础的知识,是系统中用来秒回客观事物的客体,它是构成系统的一个基本单元,一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象,反应这事物在系统中需要保持的信息和发挥的作用,是一组属性和有权对这些属性进行操作的一组服务的封装体,客观世界是由对象和对象之间的联系组成。结合本发明来说,值就是一个对象,它包括两个属性,一个是位图化弹幕信息,一个是该位图化弹幕信息的显示次数。
在一个实施例中,在所述弹幕字典中创建并保存与该待显示的弹幕信息对应的位图化弹幕信息,包括以下步骤:
创建待显示的弹幕信息的文本对象,并对该文本对象设置字体、大小、颜色以及弹幕的内容;
创建位图数据对象,设置该位图数据对象的宽高和所述文本对象的宽高一致,并设置背景为透明;
调用位图数据对象对所述文本对象进行绘制;
创建位图对象,以所述位图数据对象作为数据源赋值给位图对象,将位图对象作为所述位图化弹幕信息。
以弹幕信息“主播好厉害”为例,首先创建一个文本对象,设置字体为宋体,字体大小为4号,颜色为黑色,内容为主播好厉害;
然后创建位图数据对象,设置该位图数据对象的宽高和文本对象“主播好厉害”的宽高一致,并设置背景为透明;
然后通过位图数据对象中的draw()方法,将文本对象进行绘制操作,创建位图对象,以所述位图数据对象作为数据源赋值给位图对象,就得到了位图化弹幕信息“主播还厉害”。
在一个可选实施例中,所述创建位图数据对象之前还包括:
创建滤镜对象,并对该系统滤镜对象设置滤镜的颜色以及发光范围;
将所述滤镜对象赋值给所述文本对象。
需要注意的是,本发明并不仅仅实现对文本内容的位图化处理,当对文本内容添加滤镜效果时,仍然可以通过位图化处理得到位图化处理后的带滤镜效果的弹幕信息,用户在感官上不会发现差异。
图4示出了本发明实施例的显示弹幕信息的总流程图,如图4可知,包括:
创建弹幕字典,所述弹幕字典以键值对的形式存储弹幕信息以及与弹幕信息对应的位图化弹幕信息和每个位图化弹幕信息的显示次数。
对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息。
当存在时,将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示,并对显示的位图化弹幕信息的显示次数进行更新。
当不存在时,检查所述弹幕字典中位图化弹幕信息的数量是否超过上限。
当未超过上限时,在所述弹幕字典中创建并保存与该待显示的弹幕信息对应的位图化弹幕信息,随后对该位图化弹幕信息进行显示,并对显示的位图化弹幕信息的显示次数进行更新。
当超过上限时,将显示次数最低的位图化弹幕信息从所述弹幕字典中删除,然后在所述弹幕字典中创建并保存与该待显示的弹幕信息对应的位图化弹幕信息,对该位图化弹幕信息进行显示,并对显示的位图化弹幕信息的显示次数进行更新。
为了验证本发明的显示弹幕信息的方法相比现有技术的显示方法具有显著的进步,本发明还提供一种测试方法,包括:
1、创建测试工程TextDemo,在TextDemo的构造方法中监听Event.ADDED_TO_STAGE事件,并指定回调函数onAdd2Stage,当主类被添加到舞台时,就会触发这个事件,主类即为弹幕信息,包括采用现有技术用文本和滤镜处理的弹幕信息和位图化弹幕信息,代码如下:
2、在onAdd2Stage回调函数中设置舞台的一些参数,然后创建FPS对象,FPS对象是用来查看帧频和内存使用情况的一个类,然后把这个类添加到舞台上,后面就可以在界面上很直观的看到帧频和内存的信息了,然后监听舞台的点击事件,通过在点击事件中来创建文本弹幕数据,然后在监听EnterFrame事件,接下来需要在点击事件中进行对测试对象的操作,onAdd2Stage的代码实现如下
3、在舞台的点击事件中,每点击一次舞台就创建600个测试对象(即弹幕),本方法通过for循环的方式去进行,分为两次测试时,一次通过创建文本对象观察FPS的帧频和内存记录,看当测试对象达到多少个的时候会开始掉帧,然后将这个数据记录下来,另一次是通过创建位图化的测试对象来测试数量结果,代码如下:
需要注意的是,上述代码中的createText()方法是用来创建文本对象的,创建好文本对象然后设置一些参数,设置文本字体,设置文本颜色,设置文本大小,设置文本内容,然后添加一个描边的滤镜效果,然后返回这个文本对象进行使用,具体的代码如下:
以上代码的具体含义为:设置文本字体为黑体,字体大小为12,文本内容为这是一个测试的文本,字体颜色为0xff00ff,该颜色属于紫红的一种,滤镜效果为发光。
createItem()方法用于创建显示对象,该方法需要一个DisplayObject类型的参数,上面说到的文本、位图都是这个类型的子类,所以都可以当这种类型的参数传递进来,在这个方法中我们会给DisplayObject设置一个随机的坐标x,y,随机的速度speed,随机的方向direction,这些是用来让测试对象一直在舞台中运动的一些参数。因为要让这个测试对象都运动起来才能很好的看到测试的效果。代码如下:
onEnterFrame()方法,这个方法在即使没帧时都会执行,用来改变测试对象的位置,让显示对象运动起来,遍历舞台上所有的测试对象,然后根据前面设置好的参数让测试对象按着圆形的轨迹运动,具体代码如下所示:
完成上述步骤后就可以进行测试分析,首先,将第3步所示代码中的createItem(createBitmap());这一行代码去掉,去掉后的代码为:
通过这个代码创建的对象就是文本类型的对象(弹幕信息)了。
在本实施例中,点击3次舞台,每次产生600个对象,所以舞台上总共有1800个文本弹幕对象,观察FPS显示为42.52,帧频为60帧,可知文本加滤镜形式的弹幕信息的显示过程掉了20帧左右,所以可以认为当以文本方式到1800个对象的时候就开始掉帧了。
接着,将第3步所示代码中的createItem(createText());这一行代码去掉,去掉后的代码为:
这一次点击舞台5次,同样地,每次点击舞台将出现600个对象,所有舞台上总共有3000个位图化的弹幕信息,观察FPS显示为55帧,帧频为60帧,可知位图化的弹幕信息的显示过程只掉了5帧左右,由此可以明显看出来,使用位图对象要比文本加滤镜的方式效率更高。
本发明还提供了一种显示弹幕信息的系统,如图5所示,包括:
检索装置,用于对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;以及
显示装置,用于当弹幕字典中存在与该待显示的弹幕信息对应的位图化弹幕信息时,将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示。
位图化弹幕信息就是以位图的形式绘制的弹幕信息,例如,某一条待显示的弹幕信息为阿拉伯数字组成的“666”,位图化弹幕信息就是以像素组成的“666”,通过检索弹幕字典中是否存在与阿拉伯数字“666”对应的像素组成的“666”,当存在时,说明之前创建过这个位图化弹幕信息,于是就可以将位图化弹幕信息:由像素组成的“666”进行展示,十分方便。
本实施例通过将传统的文本加滤镜形式的弹幕形式转换为位图的形式,由于在Flash中,对位图的操作都是不消耗CPU的,因此节省了对CPU的消耗,降低了显示弹幕出现卡断的发生机率,并且将一定数量的位图化弹幕信息存储在弹幕字典中,能够在一定程度上缓解弹幕高峰期的压力,最后,同一屏幕下位图的显示数量要比普通文本加滤镜的显示数量要多,使用户能够在相同时间内浏览更多数量的弹幕信息。
图6示出了本发明实施例的另一种显示弹幕信息的系统,包括:
弹幕字典装置,用于创建弹幕字典,所述弹幕字典以键值对的形式存储弹幕信息以及与弹幕信息对应的位图化弹幕信息;
检索装置,用于对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;以及
显示装置,用于当弹幕字典中存在与该待显示的弹幕信息对应的位图化弹幕信息时,将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示。
所谓键值对形式,就是指一个键对应一个值的形式。键,就是值的编号,值,就是存储的数据。在本实施例中,键即为弹幕信息,例如汉字“主播好厉害”,值即为位图化弹幕信息,
需要注意的是,在flash语言中,很多类型都可以作为键,因此本发明并不对键的具体类型进行限制,例如,也可以将弹幕信息对应的编号ID,设置为键。
在一个实施例中,弹幕字典装置还用于:当弹幕字典中不存在与该待显示的弹幕信息对应的位图化弹幕信息时,在所述弹幕字典中创建并保存与该待显示的弹幕信息对应的位图化弹幕信息。
显然,如果没有在弹幕字典中发现与待显示的弹幕信息对应的位图化弹幕信息,说明之前没有在弹幕字典中创建过这个弹幕信息的位图化弹幕信息,那么就需要先在创建弹幕字典中创建这个位图化弹幕信息,再进行显示。
在一个实施例中,在一个实施例中,所述弹幕字典还存储每个位图化弹幕信息的显示次数。具体地,每个位图化弹幕信息的显示次数也包含在值中,也就是说,值包含两个属性,一个是位图化弹幕信息,一个是队员每个位图化弹幕信息的显示次数。
需要注意的是,由于弹幕信息如同人说的话语,从数量上可以说上将没有极限,但不同的话每天说的次数肯定不同,结合弹幕来说,发送“666”的次数属于最热门、显示次数最多的弹幕信息,其他例如“主播查房了”、“主播再来一个”也属于非常热门的弹幕信息,因此,通过记录每个的弹幕信息的显示次数,就可以知道不同时期的网络流行语,并且,由于弹幕字典不可能无限制的保存弹幕信息,通过记录不同弹幕信息的显示次数,就可以实现只保存一定热度以上的词汇,减少弹幕字典的更新频率的目的。
在一个实施例中,弹幕字典装置在创建并保存与该待显示的弹幕信息对应的位图化弹幕信息之前,还需要检查并确定所述弹幕字典中位图化弹幕信息的数量未超过上限。
需要注意的是,为了防止弹幕字典中位图化弹幕信息的保存数量超过上限,需要在创建新的位图化弹幕信息前检查弹幕字典中的位图化弹幕信息的数量,如果没有超过上限,就直接进行创建。上限可以根据具体情况设置为任何合理的值。
在一个实施例中,弹幕字典装置在创建并保存与该待显示的弹幕信息对应的位图化弹幕信息,之前还用于:
检查并确定所述弹幕字典位图化弹幕信息的数量已达到上限,则将显示次数最低的位图化弹幕信息从所述弹幕字典中删除。
在一个实施例中,弹幕字典装置还用于,对显示的位图化弹幕信息的显示次数进行更新,这样能方便后续的删除操作。
在一个实施例中,本发明公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:
S1、对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;以及
S2、若存在,则将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示。
在一个实施例中,本发明公开了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:
S1、对于任意一条待显示的弹幕信息,检索弹幕字典中是否存在与该待显示的弹幕信息对应的位图化弹幕信息;以及
S2、若存在,则将所述与该待显示的弹幕信息对应的位图化弹幕信息进行显示。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。