【发明内容】
本发明的所要解决的技术问题在于提供一种电子书模拟真实翻页效果的方法,可以模拟真实翻页效果的种种情况,让用户有更真实的体验,带来更多乐趣。
本发明采用以下技术方案解决上述技术问题:
一种电子书模拟真实翻页效果的方法,包括如下步骤:
步骤100:显示当前页面,初始化程序相关动作,接收外部输入;
步骤200:分析输入信息,确定相应改变的状态;
步骤300:根据状态信息,算出翻动的部分对应的各个点的坐标;
步骤400:系统将获取到的图像显示于显示屏上;
步骤500:判断是否翻过一页?是则转入步骤600,否则转入步骤700;
步骤600:主动请求系统解码相应页码图像,并传入处理层,显示下一页面;
步骤700;显示当前页面,继续接收外部输入,判断是否要求结束,是则转入步骤800,否则转入步骤200;
步骤800:结束。
进一步地,所述步骤300与所述步骤400之间还包括如下步骤;
步骤301:将状态信息中的起始区域和翻动部分的点坐标,以及前一页、当前页、后一页的图像数据传入渲染层;
步骤302:渲染层根据获得的信息绘制组合出当前应该显示的图像,并返回系统,要求刷新。
进一步地,所述步骤100中的外部输入包括key事件或touch事件;其中key事件指key值指示的方向,touch事件包括touch down、touch move、touchup。
所述步骤200中输入信息的处理而更改的状态信息包括:
页面未处于翻页状态时,touch down或者key事件时可确定起始区域,touch down时的起始区域便是其坐标对应的区域并计算一系列从起始角到其坐标的虚拟touch move点,之后会按这些虚拟点显示其实角到down坐标的动画;key事件时,则按方向在左侧或者右侧随机在该侧选择一个区域,并计算该区域运动到另一端的一系列虚拟touch move点,之后显示对应动画;对应的,确定翻动的是该区域延伸开来,并且决定是掀动的行为还是推滑的行为;
页面处于翻页状态时,接收到touch down会实时抓取当前页面的状态,使其样子停留在当前的状态,等待下一步操作;
页面处于翻页状态时,接收到key事件,如果是与当前翻页的方向一致,那么提高翻页的速度,更快的翻页过去;如果是与当前翻页的方向相反,那么暂停翻页,停留在当前的样子,等待下一步的操作;
touch move时,使页面的起始区域实时的跟随着move坐标的移动;
touch up时,获取当前的touch速度来作为当前速度,再把up点当作move点,计算翻过的部分和未翻过的部分的数学关系确定当前的情况是否可以翻页过去,并再计算此时的加速度,这样加速度结合当前速度,计算得下一个应该到达的位置;之后将得到的位置作为作为虚拟up点,重复按上述步骤计算运动,直到运动到终点;再按终点是否是起始区域的另一端来确定是否真的翻过去了。
本发明的优点在于:通过不同的事件来模仿,实现书页左右两侧的掀动、书页的推滑、书页翻动过程的实时抓取、书页随不同行为翻动的速度等。模拟了真实翻页效果的种种情况,能让用户有更真实的体验,带来更多乐趣。
【具体实施方式】
一种电子书模拟真实翻页效果的方法,如图1所示,包括如下步骤:
步骤100:显示当前页面,初始化程序相关动作,接收外部输入;
步骤200:分析输入信息,确定相应改变的状态;
步骤300:根据状态信息,算出翻动的部分对应的各个点的坐标;
步骤301:将状态信息中的起始区域和翻动部分的点坐标,以及前一页、当前页、后一页的图像数据传入渲染层;
步骤302:渲染层根据获得的信息绘制组合出当前应该显示的图像,并返回系统,要求刷新;
步骤400:系统将获取到的图像显示于显示屏上;
步骤500:判断是否翻过一页?是则转入步骤600,否则转入步骤700;
步骤600:主动请求系统解码相应页码图像,并传入处理层,显示下一页面;
步骤700;显示当前页面,继续接收外部输入,判断是否要求结束,是则转入步骤800,否则转入步骤200;
步骤800:结束。
其中步骤100中所述外部输入是指电子设备事件模拟对应现实行为,包括:
touch down事件,模拟对应用户去掀动该位置或者抓取页面的翻动使其停止。
touch move事件,模拟用户获取着该页进行翻书移动,此时会给予页面实时的速度。
touch up事件,模拟用户放开对书页的控制,使其按自然行为运动。
key事件,不对应现实行为,为自动翻页触发,按着方向自动的将页面翻动过去。
下面对各种状态信息做详细说明:
一、最基本的翻页效果
图2-1表示从右下角书页掀动的行为,G表示用户手指点。其他角情况类似。
图2-1中存在的这样的关系:G以ED对称于C,并且三角形GED全等于三角形CED。G作为手指点是已知的,C作为书页的固定右下角点也是已知的,而且E的y坐标和D的x坐标都是已知的,那么很容易的通过关系GE=EC、GD=DC分别求出E和D的坐标。
同样的图2-2存在相似的关系,区别只是为梯形GEDH全等于梯形CEDA。与三角形的情况一样,E点可通过GE=EC求得。D点则是通过三角形EDM相似于三角形GCN求得。最后H点就可以通过线DE对称于A点求得。
注意的是,书页翻动中是有可能被中间缝的位置处卡住而改变行为,此时手指点G点就不是已知的了,是待求点,而E或D却是已知的,为书本中间缝的坐标。
这样的,以这些点的坐标方式告知下面渲染层应该如何去画图。另外,推滑和掀动的不同在于传入的当前图片和前后图片的不同,坐标的计算是相似的。
二、不同区域掀动书页的翻页效果
1、横屏情形:可视为书本翻开,摊开着两页纸,纸的正背均有内容。
首先,一本摊开的书有四个页脚,为四个基本掀开书页区域0、3、4、7,如图3-1所示。因为虚拟无法有两指抓取页脚掀动的实感,所以当用户点击这些区域时,对应的此时将使页脚自动的运动到点击位置等待用户的进一步行为。如图3-2。
其次,上下页脚相夹的区域9和10、11和12,为侧边掀页响应区域,同理的用户点击在这些区域上时,将有掀开卷动的效果。如图3-3。
另外,四页脚旁侧的1、2、5、6区域,可理解为现实中用户手指按在该区域并适当的向另一页面方向推滑了少许。如图3-4。
最后,除上面说明的区域外书本上的其他所有区域则监控用户的手指移动事件。因为现实中人们不可能总是只使用上面所规定的区域进行翻页行为,并且有时需要快速的翻页过去,同时电子设备上可能没有按键而有触摸屏,那么监控上述的区域就很必要了。这些区域监控到用户手指移动达到一定的速度时就触发翻页动作,并且区分用户手指移动的方向为左上方向、左下方向、右上方向、右下方向四个方向进行相应的推滑翻页行为。
2、竖屏情形:可视为一沓纸放置在那里,纸的背面是空白的并有点透明,可略微看到正面的内容。
如图3-5所示,竖屏时响应区域行为与横屏相似,与横屏的区别是,去除了1、2、5、6区域,这是因为在电子设备上屏幕有限,这些区域的效果看起来不是很理想。实物图如3-6所示。
三、自然行为的模仿
现实中人们进行翻页时,按着手的用力的不同,被翻动的页面有可能翻过去,有可能先翻一点上去却又回落回去等。那么就需要考虑用力的问题,这里的力,这里转换为速度来看待以达到不同的效果。
手指松开的一瞬间,书页是有初速度v0的,为零或者为先前移动的最终速度。同时,书页作为一个物体,是有质量的,那么就有加速度a,这样即使v0为零,之后页面的速度v是会不等零的。
本发明中,书页的加速度是通过一个页面中的上面部分(即被翻开的部分)和下面部分(即保留原样的部分)的体积进行一个经过实际校验的数学关系计算得到的。
如此的,知道书页角的实时位置以及实时的速度就很容易模拟出书页之后的运动轨迹。如图4-1和图4-2所示,在未卡住状态时,运动的轨迹是不规则的,但是加速度的方向始终是指向终点的,最终的行为就是速度V和加速度a矢量和的结果。而在卡住状态时,同样如果是回落,那么运动的轨迹亦是不规则的,然而如果是继续往卡住的方向翻动的话,那么AB可视为一旋转轴,关节点是与H1点重合的B点,此时,加速度的方向依然指向终点,只取V在与AB垂直的分量和a在与AB垂直线上的分量进行运算,而与AB重合的分量全部忽略,这样的运动的轨迹将是以页脚O1和中间卡住点O2的连线为半径,点O2为圆心的某段圆弧。
在实际运用中,根据不同性能的机子,可适当删减内容点,如性能差的可放弃透明处理或竖屏布局,而性能好的可加入页面卷曲立体效果。但必须保证能实时得到三张图片。
本发明通过不同的事件来模仿,实现书页左右两侧的掀动、书页的推滑、书页翻动过程的实时抓取、书页随不同行为翻动的速度等。模拟了真实翻页效果的种种情况,能让用户有更真实的体验,带来更多乐趣。