一种基于IPTV规范的EPG自动寻找区域焦点的方法与流程

文档序号:32400729发布日期:2022-12-02 18:55阅读:169来源:国知局
一种基于IPTV规范的EPG自动寻找区域焦点的方法与流程
一种基于iptv规范的epg自动寻找区域焦点的方法
技术领域
1.本发明涉及epg页面处理相关技术领域,尤其是指一种基于iptv规范的epg自动寻找区域焦点的方法。


背景技术:

2.目前基于javascript开发,通过在机顶盒展示的各种epg页面,为了吸引用户,对用户体验的要求越来越高,对各种epg元素的焦点移动提出了各种需求,机顶盒浏览器通常采用div元素实现焦点元素变化效果,但这种焦点变化效果在iptv中功能单一且不够灵活,也无法实现一些自动化效果,如左右或上下的循环移动效果等,都需要在单独编写javascript代码来实现,在开发的效率上和标准化上有所欠缺。


技术实现要素:

3.本发明是为了克服现有技术中焦点变化效果不够灵活的不足,提供了一种焦点变化灵活的基于iptv规范的epg自动寻找区域焦点的方法。
4.为了实现上述目的,本发明采用以下技术方案:
5.一种基于iptv规范的epg自动寻找区域焦点的方法,具体包括如下步骤:
6.(1)初始化epg展示区域,初始化epg展示区域内所有焦点元素的唯一编码;虚拟设计epg展示区域的界面按照x轴、y轴进行布局,以epg展示区域的左上角为原点(0,0),初始化临时的存放参数x_temp、y_temp、id_temp,初始化屏幕分辨率阈值distance;
7.(2)在epg展示区域,html中文档获取各元素对象数组的逻辑为从上至下,从左至右的逻辑得到元素对象数组;
8.(3)当进行向上移动时,计算当前焦点元素移动起始点的上边框中点坐标,循环epg展示区域内的焦点元素,如果循环到的焦点元素唯一编码和当前焦点的唯一编码一致,则不做处理;否则计算循环到的焦点元素上边框中点坐标;
9.(4)如果当前焦点元素的坐标y值小于等于循环到的焦点元素上边框中点坐标y值,则不做处理;否则计算临时屏幕分辨率阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp大于等于distance,则不进行更新操作;如果distance_temp小于distance,则更新x_temp和y_temp为循环到的焦点元素上边框中点坐标,更新id_temp为循环到的焦点元素的唯一编码,同时更新distance为distance_temp;直到循环完epg展示区域内所有焦点元素后确定要移动的焦点元素,完成自动寻找区域焦点的实现;
10.(5)当进行向下移动时,计算当前焦点元素移动起始点的下边框中点坐标,循环epg展示区域内的焦点元素,如果循环到的焦点元素唯一编码和当前焦点的唯一编码一致,则不做处理;否则计算循环到的焦点元素下边框中点坐标;
11.(6)如果当前焦点元素的坐标y值大于等于循环到的焦点元素下边框中点坐标y值,则不做处理;否则计算临时屏幕分辨率阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp大于等于distance,则不进行更新操作;如果distance_
temp小于distance,则更新x_temp和y_temp为循环到的焦点元素下边框中点坐标,更新id_temp为循环到的焦点元素的唯一编码,同时更新distance为distance_temp;直到循环完epg展示区域内所有焦点元素后确定要移动的焦点元素,完成自动寻找区域焦点的实现;
12.(7)当进行向左移动时,计算当前焦点元素移动起始点的左边框中点坐标,循环epg展示区域内的焦点元素,如果循环到的焦点元素唯一编码和当前焦点的唯一编码一致,则不做处理;否则计算循环到的焦点元素左边框中点坐标;
13.(8)如果当前焦点元素的坐标x值小于等于循环到的焦点元素左边框中点坐标x值,则不做处理;否则计算临时屏幕分辨率阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp大于等于distance,则不进行更新操作;如果distance_temp小于distance,则更新x_temp和y_temp为循环到的焦点元素左边框中点坐标,更新id_temp为循环到的焦点元素的唯一编码,同时更新distance为distance_temp;直到循环完epg展示区域内所有焦点元素后确定要移动的焦点元素,完成自动寻找区域焦点的实现;
14.(9)当进行向右移动时,计算当前焦点元素移动起始点的右边框中点坐标,循环epg展示区域内的焦点元素,如果循环到的焦点元素唯一编码和当前焦点的唯一编码一致,则不做处理;否则计算循环到的焦点元素右边框中点坐标;
15.(10)如果当前焦点元素的坐标x值大于等于循环到的焦点元素右边框中点坐标y值,则不做处理;否则计算临时屏幕分辨率阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp大于等于distance,则不进行更新操作;如果distance_temp小于distance,则更新x_temp和y_temp为循环到的焦点元素右边框中点坐标,更新id_temp为循环到的焦点元素的唯一编码,同时更新distance为distance_temp;直到循环完epg展示区域内所有焦点元素后确定要移动的焦点元素,完成自动寻找区域焦点的实现。
16.上述操作方法中优先需要对比x和y,其中左右移动对比x,上下移动对比y,因为这样性能上会节省掉多余的计算过程,并且屏幕分辨率阈值是作为辅助计算方式加强精确度,其他方向移动判断逻辑类似。本技术介绍并定义一种通过自动搜索焦点机制和简单的运算规则,按照层级设计实现层层嵌套判断,最终通过该算法计算出最佳目标焦点,实现了按规则计算的焦点移动方法,可以满足日常产品需求,提升用户体验。本方法通过阈值优化算法,提高搜索焦点准确性;本方法兼容绝对布局和相对布局;本方法支持跨屏(瀑布流、屏幕滚动情况)焦点自动搜索。
17.作为优选,epg展示区域指的是包含所有焦点元素的区域;焦点元素的唯一编码指的是给每个焦点元素赋值一个唯一id,且epg使用的javascript规范默认支持;焦点元素的唯一编码的规则定义为:通过epg标签样式带有唯一编码的元素识别为焦点,且epg展示区域需要统一使用同一个标准;临时存放参数的变量x_temp、y_temp、id_temp这三个值为空或者默认当前焦点的x、y、id,作用为暂时存放虚拟坐标以及虚拟id,便于和其他焦点元素对比来选择移动最佳方案的目标焦点;初始化的屏幕分辨率阈值distance=(屏幕分辨率宽度-左上角原点横坐标)*(屏幕分辨率高度-左上角原点纵坐标)。
18.作为优选,在步骤(3)中,循环区域内的焦点元素指的是通过规则定义对epg展示区域进行焦点元素的识别,定义当前焦点元素的上边框中点坐标x值以及y值,
19.当前焦点元素的上边框中点坐标x值=当前焦点htmlelement.left属性值+(当前焦点htmlelement.offsetwidth属性值/2);
20.当前焦点元素的上边框中点坐标y值=当前焦点htmlelement.top属性值;
21.定义循环到的焦点元素上边框中点坐标xn值以及yn值,
22.循环到的焦点元素上边框中点坐标xn值=循环到的焦点htmlelement.left属性值+(循环到的焦点htmlelement.offsetwidth属性值/2);
23.循环到的焦点元素上边框中点坐标yn值=循环到的焦点htmlelement.top属性值;
24.其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的上边框中点坐标x值、当前焦点元素的上边框中点坐标y值、循环到的焦点元素上边框中点坐标xn值、循环到的焦点元素上边框中点坐标yn值均指的是绝对数值,htmlelement.left指的是相对屏幕左边框的绝对距离,htmlelement.offsetwidth指的是焦点元素的宽度,htmlelement.top指的是相对屏幕上边框的绝对距离。
25.作为优选,在步骤(4)中,计算临时屏幕分辨率阈值distance_temp=(当前焦点元素的上边框中点坐标x值-循环到的焦点元素上边框中点坐标xn值)的绝对值*(当前焦点元素的上边框中点坐标y值-循环到的焦点元素上边框中点坐标yn值)的绝对值。
26.作为优选,在步骤(5)中,循环区域内的焦点元素指的是通过规则定义对epg展示区域进行焦点元素的识别,定义当前焦点元素的下边框中点坐标x值以及y值,
27.当前焦点元素的下边框中点坐标x值=当前焦点htmlelement.left属性值+(当前焦点htmlelement.offsetwidth属性值/2);
28.当前焦点元素的下边框中点坐标y值=当前焦点htmlelement.top属性值+当前焦点htmlelement.offsetheight属性值;
29.定义循环到的焦点元素下边框中点坐标xn值以及yn值,
30.循环到的焦点元素下边框中点坐标xn值=循环到的焦点htmlelement.left属性值+(循环到的焦点htmlelement.offsetwidth属性值/2);
31.循环到的焦点元素下边框中点坐标yn值=循环到的焦点htmlelement.top属性值+循环到的焦点htmlelement.offsetheight属性值;
32.其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的下边框中点坐标x值、当前焦点元素的下边框中点坐标y值、循环到的焦点元素下边框中点坐标xn值、循环到的焦点元素下边框中点坐标yn值均指的是绝对数值,htmlelement.left指的是相对屏幕左边框的绝对距离,htmlelement.offsetwidth指的是焦点元素的宽度,htmlelement.top指的是相对屏幕上边框的绝对距离,htmlelement.offsetheight指的是焦点元素的高度。
33.作为优选,在步骤(6)中,计算临时屏幕分辨率阈值distance_temp=(当前焦点元素的下边框中点坐标x值-循环到的焦点元素下边框中点坐标xn值)的绝对值*(当前焦点元素的下边框中点坐标y值-循环到的焦点元素下边框中点坐标yn值)的绝对值。
34.作为优选,在步骤(7)中,循环区域内的焦点元素指的是通过规则定义对epg展示区域进行焦点元素的识别,定义当前焦点元素的左边框中点坐标x值以及y值,
35.当前焦点元素的左边框中点坐标x值=当前焦点htmlelement.left属性值;
36.当前焦点元素的左边框中点坐标y值=当前焦点htmlelement.top属性值+(当前焦点htmlelement.offsetheight属性值/2);
37.定义循环到的焦点元素下边框中点坐标xn值以及yn值,
38.循环到的焦点元素下边框中点坐标xn值=循环到的焦点htmlelement.left属性值;
39.循环到的焦点元素下边框中点坐标yn值=循环到的焦点htmlelement.top属性值+(循环到的焦点htmlelement.offsetheight属性值/2);
40.其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的左边框中点坐标x值、当前焦点元素的左边框中点坐标y值、循环到的焦点元素下边框中点坐标xn值、循环到的焦点元素下边框中点坐标yn值均指的是绝对数值,htmlelement.left指的是相对屏幕左边框的绝对距离,htmlelement.top指的是相对屏幕上边框的绝对距离,htmlelement.offsetheight指的是焦点元素的高度。
41.作为优选,在步骤(8)中,计算临时屏幕分辨率阈值distance_temp=(当前焦点元素的左边框中点坐标x值-循环到的焦点元素下边框中点坐标xn值)的绝对值*(当前焦点元素的左边框中点坐标y值-循环到的焦点元素下边框中点坐标yn值)的绝对值。
42.作为优选,在步骤(9)中,循环区域内的焦点元素指的是通过规则定义对epg展示区域进行焦点元素的识别,定义当前焦点元素的右边框中点坐标x值以及y值,
43.当前焦点元素的右边框中点坐标x值=当前焦点htmlelement.left属性值+当前焦点htmlelement.offsetwidth属性值;
44.当前焦点元素的右边框中点坐标y值=当前焦点htmlelement.top属性值+(当前焦点htmlelement.offsetheight属性值/2);
45.定义循环到的焦点元素下边框中点坐标xn值以及yn值,
46.循环到的焦点元素下边框中点坐标xn值=循环到的焦点htmlelement.left属性值+循环到的焦点htmlelement.offsetwidth属性值;
47.循环到的焦点元素下边框中点坐标yn值=循环到的焦点htmlelement.top属性值+(循环到的焦点htmlelement.offsetheight属性值/2);
48.其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的右边框中点坐标x值、当前焦点元素的右边框中点坐标y值、循环到的焦点元素下边框中点坐标xn值、循环到的焦点元素下边框中点坐标yn值均指的是绝对数值,htmlelement.left指的是相对屏幕左边框的绝对距离,htmlelement.offsetwidth指的是焦点元素的宽度,htmlelement.top指的是相对屏幕上边框的绝对距离,htmlelement.offsetheight指的是焦点元素的高度。
49.作为优选,在步骤(10)中,计算临时屏幕分辨率阈值distance_temp=(当前焦点元素的右边框中点坐标x值-循环到的焦点元素下边框中点坐标xn值)的绝对值*(当前焦点元素的右边框中点坐标y值-循环到的焦点元素下边框中点坐标yn值)的绝对值。
50.本发明的有益效果是:通过阈值优化算法,提高搜索焦点准确性;兼容绝对布局和相对布局;支持跨屏(瀑布流、屏幕滚动情况)焦点自动搜索,实现了按规则计算的焦点移动方法,可以满足日常产品需求,提升用户体验。
附图说明
51.图1是本发明实施实例的焦点元素分布示意图。
具体实施方式
52.下面结合附图和具体实施方式对本发明做进一步的描述。
53.一种基于iptv规范的epg自动寻找区域焦点的方法,具体包括如下步骤:
54.(1)初始化epg展示区域,初始化epg展示区域内所有焦点元素的唯一编码;虚拟设计epg展示区域的界面按照x轴、y轴进行布局,以epg展示区域的左上角为原点(0,0),初始化临时的存放参数x_temp、y_temp、id_temp,初始化屏幕分辨率阈值distance;
55.epg展示区域指的是包含所有焦点元素的区域;焦点元素的唯一编码指的是给每个焦点元素赋值一个唯一id,且epg使用的javascript规范默认支持;焦点元素的唯一编码的规则定义为:通过epg标签样式带有唯一编码的元素识别为焦点,且epg展示区域需要统一使用同一个标准(例如class="item",具体标识方法不限);临时存放参数的变量x_temp、y_temp、id_temp这三个值为空或者默认当前焦点的x、y、id,作用为暂时存放虚拟坐标以及虚拟id,便于和其他焦点元素对比来选择移动最佳方案的目标焦点;初始化的屏幕分辨率阈值distance=(屏幕分辨率宽度-左上角原点横坐标)*(屏幕分辨率高度-左上角原点纵坐标)。
56.(2)在epg展示区域,html中文档获取各元素对象数组的逻辑为从上至下,从左至右的逻辑得到元素对象数组;
57.(3)当进行向上移动时,计算当前焦点元素移动起始点的上边框中点坐标,循环epg展示区域内的焦点元素,如果循环到的焦点元素唯一编码和当前焦点的唯一编码一致,则不做处理;否则计算循环到的焦点元素上边框中点坐标;
58.循环区域内的焦点元素指的是通过规则定义对epg展示区域进行焦点元素的识别(例如获取上述描述的样式class=“item”的所有div元素),定义当前焦点元素的上边框中点坐标x值以及y值,
59.当前焦点元素的上边框中点坐标x值=当前焦点htmlelement.left属性值+(当前焦点htmlelement.offsetwidth属性值/2);
60.当前焦点元素的上边框中点坐标y值=当前焦点htmlelement.top属性值;
61.定义循环到的焦点元素上边框中点坐标xn值以及yn值,
62.循环到的焦点元素上边框中点坐标xn值=循环到的焦点htmlelement.left属性值+(循环到的焦点htmlelement.offsetwidth属性值/2);
63.循环到的焦点元素上边框中点坐标yn值=循环到的焦点htmlelement.top属性值;
64.其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的上边框中点坐标x值、当前焦点元素的上边框中点坐标y值、循环到的焦点元素上边框中点坐标xn值、循环到的焦点元素上边框中点坐标yn值均指的是绝对数值,htmlelement.left指的是相对屏幕左边框的绝对距离,htmlelement.offsetwidth指的是焦点元素的宽度,htmlelement.top指的是相对屏幕上边框的绝对距离。
65.(4)如果当前焦点元素的坐标y值小于等于循环到的焦点元素上边框中点坐标y值,则不做处理;否则计算临时屏幕分辨率阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp大于等于distance,则不进行更新操作;如果distance_temp小于distance,则更新x_temp和y_temp为循环到的焦点元素上边框中点坐标,更新id_
temp为循环到的焦点元素的唯一编码,同时更新distance为distance_temp;直到循环完epg展示区域内所有焦点元素后确定要移动的焦点元素,完成自动寻找区域焦点的实现;计算临时屏幕分辨率阈值distance_temp=(当前焦点元素的上边框中点坐标x值-循环到的焦点元素上边框中点坐标xn值)的绝对值*(当前焦点元素的上边框中点坐标y值-循环到的焦点元素上边框中点坐标yn值)的绝对值。
66.(5)当进行向下移动时,计算当前焦点元素移动起始点的下边框中点坐标,循环epg展示区域内的焦点元素,如果循环到的焦点元素唯一编码和当前焦点的唯一编码一致,则不做处理;否则计算循环到的焦点元素下边框中点坐标;
67.循环区域内的焦点元素指的是通过规则定义对epg展示区域进行焦点元素的识别,定义当前焦点元素的下边框中点坐标x值以及y值,
68.当前焦点元素的下边框中点坐标x值=当前焦点htmlelement.left属性值+(当前焦点htmlelement.offsetwidth属性值/2);
69.当前焦点元素的下边框中点坐标y值=当前焦点htmlelement.top属性值+当前焦点htmlelement.offsetheight属性值;
70.定义循环到的焦点元素下边框中点坐标xn值以及yn值,
71.循环到的焦点元素下边框中点坐标xn值=循环到的焦点htmlelement.left属性值+(循环到的焦点htmlelement.offsetwidth属性值/2);
72.循环到的焦点元素下边框中点坐标yn值=循环到的焦点htmlelement.top属性值+循环到的焦点htmlelement.offsetheight属性值;
73.其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的下边框中点坐标x值、当前焦点元素的下边框中点坐标y值、循环到的焦点元素下边框中点坐标xn值、循环到的焦点元素下边框中点坐标yn值均指的是绝对数值,htmlelement.left指的是相对屏幕左边框的绝对距离,htmlelement.offsetwidth指的是焦点元素的宽度,htmlelement.top指的是相对屏幕上边框的绝对距离,htmlelement.offsetheight指的是焦点元素的高度。
74.(6)如果当前焦点元素的坐标y值大于等于循环到的焦点元素下边框中点坐标y值,则不做处理;否则计算临时屏幕分辨率阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp大于等于distance,则不进行更新操作;如果distance_temp小于distance,则更新x_temp和y_temp为循环到的焦点元素下边框中点坐标,更新id_temp为循环到的焦点元素的唯一编码,同时更新distance为distance_temp;直到循环完epg展示区域内所有焦点元素后确定要移动的焦点元素,完成自动寻找区域焦点的实现;计算临时屏幕分辨率阈值distance_temp=(当前焦点元素的下边框中点坐标x值-循环到的焦点元素下边框中点坐标xn值)的绝对值*(当前焦点元素的下边框中点坐标y值-循环到的焦点元素下边框中点坐标yn值)的绝对值。
75.(7)当进行向左移动时,计算当前焦点元素移动起始点的左边框中点坐标,循环epg展示区域内的焦点元素,如果循环到的焦点元素唯一编码和当前焦点的唯一编码一致,则不做处理;否则计算循环到的焦点元素左边框中点坐标;
76.循环区域内的焦点元素指的是通过规则定义对epg展示区域进行焦点元素的识别,定义当前焦点元素的左边框中点坐标x值以及y值,
77.当前焦点元素的左边框中点坐标x值=当前焦点htmlelement.left属性值;
78.当前焦点元素的左边框中点坐标y值=当前焦点htmlelement.top属性值+(当前焦点htmlelement.offsetheight属性值/2);
79.定义循环到的焦点元素下边框中点坐标xn值以及yn值,
80.循环到的焦点元素下边框中点坐标xn值=循环到的焦点htmlelement.left属性值;
81.循环到的焦点元素下边框中点坐标yn值=循环到的焦点htmlelement.top属性值+(循环到的焦点htmlelement.offsetheight属性值/2);
82.其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的左边框中点坐标x值、当前焦点元素的左边框中点坐标y值、循环到的焦点元素下边框中点坐标xn值、循环到的焦点元素下边框中点坐标yn值均指的是绝对数值,htmlelement.left指的是相对屏幕左边框的绝对距离,htmlelement.top指的是相对屏幕上边框的绝对距离,htmlelement.offsetheight指的是焦点元素的高度。
83.(8)如果当前焦点元素的坐标x值小于等于循环到的焦点元素左边框中点坐标x值,则不做处理;否则计算临时屏幕分辨率阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp大于等于distance,则不进行更新操作;如果distance_temp小于distance,则更新x_temp和y_temp为循环到的焦点元素左边框中点坐标,更新id_temp为循环到的焦点元素的唯一编码,同时更新distance为distance_temp;直到循环完epg展示区域内所有焦点元素后确定要移动的焦点元素,完成自动寻找区域焦点的实现;其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的左边框中点坐标x值、当前焦点元素的左边框中点坐标y值、循环到的焦点元素下边框中点坐标xn值、循环到的焦点元素下边框中点坐标yn值均指的是绝对数值。
84.(9)当进行向右移动时,计算当前焦点元素移动起始点的右边框中点坐标,循环epg展示区域内的焦点元素,如果循环到的焦点元素唯一编码和当前焦点的唯一编码一致,则不做处理;否则计算循环到的焦点元素右边框中点坐标;
85.循环区域内的焦点元素指的是通过规则定义对epg展示区域进行焦点元素的识别,定义当前焦点元素的右边框中点坐标x值以及y值,
86.当前焦点元素的右边框中点坐标x值=当前焦点htmlelement.left属性值+当前焦点htmlelement.offsetwidth属性值;
87.当前焦点元素的右边框中点坐标y值=当前焦点htmlelement.top属性值+(当前焦点htmlelement.offsetheight属性值/2);
88.定义循环到的焦点元素下边框中点坐标xn值以及yn值,
89.循环到的焦点元素下边框中点坐标xn值=循环到的焦点htmlelement.left属性值+循环到的焦点htmlelement.offsetwidth属性值;
90.循环到的焦点元素下边框中点坐标yn值=循环到的焦点htmlelement.top属性值+(循环到的焦点htmlelement.offsetheight属性值/2);
91.其中,n指的是1.2.3

n-1,n指的是epg展示区域内所有焦点元素的数量总和,当前焦点元素的右边框中点坐标x值、当前焦点元素的右边框中点坐标y值、循环到的焦点元素下边框中点坐标xn值、循环到的焦点元素下边框中点坐标yn值均指的是绝对数值,
htmlelement.left指的是相对屏幕左边框的绝对距离,htmlelement.offsetwidth指的是焦点元素的宽度,htmlelement.top指的是相对屏幕上边框的绝对距离,htmlelement.offsetheight指的是焦点元素的高度。
92.(10)如果当前焦点元素的坐标x值大于等于循环到的焦点元素右边框中点坐标y值,则不做处理;否则计算临时屏幕分辨率阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp大于等于distance,则不进行更新操作;如果distance_temp小于distance,则更新x_temp和y_temp为循环到的焦点元素右边框中点坐标,更新id_temp为循环到的焦点元素的唯一编码,同时更新distance为distance_temp;直到循环完epg展示区域内所有焦点元素后确定要移动的焦点元素,完成自动寻找区域焦点的实现;计算临时屏幕分辨率阈值distance_temp=(当前焦点元素的右边框中点坐标x值-循环到的焦点元素下边框中点坐标xn值)的绝对值*(当前焦点元素的右边框中点坐标y值-循环到的焦点元素下边框中点坐标yn值)的绝对值。
93.具体实施实例如下:(定义页面左上角为坐标轴原点,坐标值为[0,0])
[0094]
步骤s1:初始化epg展示区域,例如分辨率720p机顶盒能够看见的区域为720*1280像素,对epg展示区域元素(例如div、span等元素)设置样式class="item",设置id为id=“唯一编码(保证所有元素编码不会重复即可)”;初始化临时的存放参数x_temp=0(变量x_temp,下文计算移动规则使用)、y_temp=0(变量y_temp,下文计算移动规则使用),id_temp=空(变量id_temp,下文计算移动规则使用);初始化屏幕分辨率阈值distance=(1280-0)*(720-0)(变量参数,屏幕分辨率阈值=(屏幕分辨率宽度-左上角原点横坐标0)*(屏幕分辨率高度-左上角原点纵坐标0),下文中用以计算两个元素指定坐标之间的相对乘积,计算公式来源:通过行业经验自定义公式,通过该公式辅助计算目标焦点最佳方案);移动时以自动寻找焦点算法(以左移作为参考,具体算法见步骤s2~s4)判断移动规则。
[0095]
步骤s2:以一个包含四个元素组件的epg展示区域为例,虚拟各元素为矩形(多边形元素可虚拟补全为矩形)。html中文档获取各元素对象数组的逻辑为从上至下,从左至右的逻辑得到元素对象数组(html语言自带的功能)。所以,当焦点向左移动时以获取的各元素左边界中心点进行自动寻找焦点算法计算,如图1所示,根据上述html中文档获取规则,各元素获取顺序为元素一、元素二、元素三、元素四,假设元素一为默认初始焦点,并且各元素左边界中心点坐标如图1所示,元素一左边界中心点为(x,y),元素二左边界中心点为(x1,y1),元素三左边界中心点为(x2,y2),元素四左边界中心点为(x3,y3),赋值x_temp=x,y_temp=y。
[0096]
步骤s3:获取元素一初始焦点左边界中点坐标(x,y),假设元素一为o1(元素2为o2,元素3为o3,元素4为o4),则元素一相对epg展示区域左边界的绝对距离声明为left_o1(下文其他元素同理,例如元素二对应声明为left_o2,依次类推其他元素声明),元素一相对epg展示区域上边界的绝对距离声明为top_o1(下文其他元素同理,例如元素二对应声明为top_o2,依次类推其他元素声明),元素一的高度声明为offset_height_o1(下文其他元素同理,例如元素二对应声明为offset_height_o2,依次类推其他元素声明),元素一的宽度声明为offset_width_o1(下文其他元素同理,例如元素二对应声明为offset_width_o2,依次类推其他元素声明)。通过上述规则计算得到x=left_o1,y=top_o1+(offset_height_o1/2),例如元素一相对epg展示区域左边界的绝对距离声明为120像素(下文中的
像素以px代替),元素一相对epg展示区域上边界的绝对距离声明为50px,元素一的高度声明为40px,元素一的宽度声明为90px,则x=120px,y=50+(40/2)=70px,声明元素一的唯一编码为id_o1,同理其他元素与元素一大小一致,则可声明元素二的x1=230px,y1=70+(40/2)=90px,元素三的x2=80px,y2=200+(40/2)=220px,元素四的x3=200px,y3=200+(40/2)=220px(其中元素一、元素二、元素三、元素四的元素左边界坐标根据实际场景布局获取即可,该步骤中涉及的值以图1为模型假设,仅供计算参考)。
[0097]
步骤s4:按照步骤s3获取(x,y)坐标后使用自动寻找焦点方法进行计算,算法如下:对步骤s2中获得的元素按元素一、元素二、元素三、元素四的顺序进行循环,如果对比发现初始元素和当前循环到的元素是同一个元素则不进行算法计算,依次进行下一个元素计算,是否同一个元素可通过步骤s3中声明的id_o1唯一编码进行判断。如果元素不是同一个,则依次对比焦点元素的x、与其他元素的x1、x2...等元素左边界横坐标,如果x小于等于其他元素的左边界中点横坐标,则进行下一个元素左边界中点横坐标循环对比,如果大于其他元素的左边界中点横坐标,则计算临时阈值distance_temp,并且对比distance_temp和distance大小,如果distance_temp《distance,则赋值临时参数,赋值临时参数x_temp=对应元素左边界中点横坐标,y_temp=对应元素左边界重点纵坐标,distance=distance_temp,否则不进行赋值操作。例子如下:元素一的x与循环到的元素二的x1(x1的值步骤s3已获取)、元素三x2(x2的值步骤s3已获取)、元素四x3(x3的值步骤s3已获取),元素一的x(120px)《元素二的x1(230px)则说明该元素二不满足条件,直接开始循环元素三进行对比,此时x(120px)》x2(80px),则对比x_temp(120px)是否大于x2(80px),如果大于x2(80px),则声明临时阈值distance_temp=(x-x2)的绝对值*(y-y2)的绝对值,即distance_temp=|120-80|*|70-220|=6000,因为distance_temp《distance,赋值临时参数x_temp=x2,y_temp=y2,并且根据步骤s3转换为实际数值即x_temp=80px,y_temp=220px,此时赋值id_temp=“元素三id唯一编码”,赋值完毕后继续循环下一个元素四对比,因x(120px)《x3(200px),所以继续循环下一个元素(即如同执行循环到元素二的逻辑操作),又因为没有下一个元素,所以该阶段算法即算完成。假设若有其他元素左边界中点横坐标小于x,则如同执行上述循环到元素三的逻辑操作。
[0098]
步骤s5:通过步骤s4自动寻找焦点算法计算完毕后,通过id_temp对应的元素编码确定要移动的焦点元素,此时通过触发元素上焦样式实现焦点元素上焦的操作,完成自动寻找焦点实现。
[0099]
按上述原则以及定义的坐标,在初始焦点的位置按下左键,会移动到元素三。同理,在初始焦点的位置按下右键,会移动到元素二;在初始焦点的位置按下上键,不会移动;在初始焦点的位置按下下键,会移动到元素三。
[0100]
本技术介绍并定义一种通过自动搜索焦点机制和简单的运算规则,按照层级设计实现层层嵌套判断,最终通过该算法计算出最佳目标焦点,实现了按规则计算的焦点移动方法,可以满足日常产品需求,提升用户体验。本方法通过阈值优化算法,提高搜索焦点准确性;本方法兼容绝对布局和相对布局;本方法支持跨屏(瀑布流、屏幕滚动情况)焦点自动搜索。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1