具体实施方式
以下,参照附图对本发明的实施方式进行说明。
(实施方式1)
图1是本发明的实施方式1的动画描绘装置10的结构图。图1所示的动画描绘装置10包括解释部11、动画控制部12、图形描绘控制部13、图形处理部14、脚本数据存储部21、变更预定信息存储部22、23、非同步标志存储部24、脚本变量存储部25及本地变量存储部26。
解释部11以解释方式依次解释用于动画显示存储于脚本数据存储部21的GUI的脚本数据。在本实施方式中,解释部11在对利用指定的脚本变量(script variable)定义的动画描绘指示进行了解释后,将描绘请求输出至动画控制部12。
动画控制部12通过执行以本机语言记述的程序模块,对GUI进行动画显示。在本实施方式中,动画控制部12在受理了来自解释部11的描绘请求时,将脚本变量变换为本机语言形式的本地变量(native variable),并一边依次更新本地变量一边对GUI进行动画显示。
这样,动画控制部12能够一边依次更新独立于脚本变量的本地变量一边对GUI进行动画显示。因此,动画控制部12无需在动画途中从解释部11导入变量,从而没有动画控制部12导入变量时在解释部11发生的检索处理,其结果能够提高动画的执行速度。
即,在执行以本机语言记述的程序模块时,脚本变量的复制即本地变量被代入程序模块。在此,在GUI动画中,作为脚本变量,采用GUI对象的属性信息。
以本机语言记述的程序模块在动画的执行过程中频繁地对GUI对象的属性信息进行访问(accesses),由于访问目的地为本地变量的属性信息,因此访问所需的时间与对脚本语言的属性信息进行访问时相比大幅减少。因此,能够提高动画的执行速度。此外,作为本机语言,采用机器语言。另外,作为解释部11进行的检索处理,采用处理负担较高的例如散列检索(hash retrieval)。
另外,动画控制部12基于脚本变量生成变更预定信息,该变更预定信息表示从动画开始到结束为止的一个或多个描绘时间点的GUI的状态。并且,当到达了变更预定信息表示的描绘时间点时,动画控制部12将在该描绘时间点的本地变量输出至解释部11。
若即使本地变量被更新但该更新完全没有被反映于脚本变量,则解释部11无法把握动画执行途中的本地变量,导致无法把握GUI对象的属性信息。
另一方面,若动画控制部12每当更新本地变量就将本地变量通知给解释部11,则由于脚本变量和本地变量同步,因此解释部11能够把握当前的动画的状态。但是,这样的话,在动画控制部12与解释部11之间频繁地进行数据的收发,动画控制部12的处理负担增大,反而有可能降低动画的执行速度。
因此,动画控制部12仅在到达了变更预定信息表示的描绘时间点时,将本地变量输出至解释部11。由此,动画控制部12与解释部11之间的数据收发的次数大幅减少,其结果能够防止动画的执行速度的降低。
另外,动画控制部12在动画结束时将结束通知输出至解释部11。由此,解释部11能够识别动画已结束。
另外,动画控制部12将变更预定信息存储在变更预定信息存储部23中,并将变更预定信息输出至解释部11。此时,解释部11将输出的变更预定信息存储在变更预定信息存储部22中。
这样,通过让变更预定信息存储部22、23这两者都存储变更预定信息,能够减少在解释部11及动画控制部12间收发的数据量,从而能够谋求动画控制部12及解释部11的处理负担的减轻。
在此,变更预定信息存储部22采用解释部11可访问的存储区域或存储装置,变更预定信息存储部23采用动画控制部12可访问的存储区域或存储装置。
另外,动画控制部12例如每当到达1帧的描绘时间点就更新本地变量,并根据更新后的本地变量将用于描绘下一帧的描绘指示输出至图形描绘控制部13,让图形描绘控制部13进行1帧的GUI的描绘处理。另外,动画控制部12每当1帧的描绘处理结束就接收到来自图形描绘控制部13的结束通知。
图形描绘控制部13若接收到来自动画控制部12的描绘指示,则将该描绘指示分解成图形处理部14可执行的低级别的描绘指令,并将描绘指令输出至图形处理部14。在此,图形描绘控制部13通常被称为图形库或设备驱动程序等。
图形处理部14执行从图形描绘控制部13输出的描绘指令,通过在内置的帧缓存器中描绘帧生成图形。
上述的解释部11在动画开始时,激活表示脚本变量与本地变量不同步的非同步标志,当接收到来自动画控制部12的结束通知时取消非同步标志。并且,在非同步标志被激活期间当用户对输入装置40进行操作而发生了指定的输入事件(event)时,解释部11执行使动画控制部12输出本地变量的同步处理。
例如,考虑在GUI对象移动的动画的执行途中,发生了用户点击鼠标的输入事件的情况。在动画的执行途中,由于脚本变量与本地变量不同步,因此解释部11无法知晓当前的GUI对象的位置,无法判断在点击时鼠标指针与GUI对象是否重叠。
因此,当发生了输入事件时,解释部11强制性地让动画控制部12输出当前的本地变量,使脚本变量与本地变量同步。由此,解释部11能够识别当前的GUI对象的位置,能够判断在发生了输入事件时鼠标指针与GUI对象是否重叠。并且,当判断鼠标指针与GUI对象重叠时,解释部11可以根据脚本数据执行该GUI对象被点击时发生的处理。
此外,解释部11可以将从动画控制部12输出的本地变量变换为脚本变量,并且以变换后的脚本变量更新当前由脚本变量存储部25存储的脚本变量。另外,解释部11在设定非同步标志时,可以在非同步标志存储部24中存储例如“1”这一数据,在取消非同步标志时,可以在非同步标志存储部24中存储例如“0”这一数据。
脚本数据存储部21存储用于动画显示GUI的脚本数据。在此,脚本数据是以解释型的脚本语言记述的数据,例如,以JavaScript(注册商标)等记述。该脚本数据记述用于定义构成作为动画对象的GUI的GUI对象的属性信息的数据、用于动画显示GUI的动画描绘指示等。
变更预定信息存储部22存储从动画控制部12输出并由解释部11受理的变更预定信息。在此,变更预定信息存储部22存储的变更预定信息例如是由解释部11变换成脚本变量的变更预定信息。
变更预定信息存储部23存储由动画控制部12生成的变更预定信息。在此,存储在变更预定信息存储部23的变更预定信息是本地变量的变更预定信息。
图6是表示以表形式示出本发明的实施方式1的脚本数据中记述的属性信息的属性信息表TB1的图。如图6所示,可知,属性信息表TB1包括GUI对象识别符、X坐标、Y坐标、宽度及高度的栏,各GUI的属性信息包含这些数据。此外,构成图6所示的属性信息的数据只不过是例示性地表示在实现坐标发生变化的动画时所需的数据,并不限定于图6所示的数据。例如,当采用颜色或透明度发生变化的动画时,可以使属性信息包含颜色及透明度。
GUI对象识别符包括为了识别各GUI对象而唯一地分配给各GUI对象的字符串。X坐标及Y坐标表示GUI对象的显示位置。在图6的例子中,将显示装置30的画面的例如左上的顶点作为原点,以垂直方向向下来定义Y坐标,以水平方向向右来定义X坐标。因此,X坐标及Y坐标表示GUI对象在画面上的各像素的位置。
宽度表示GUI对象在水平方向的大小。高度表示GUI对象在垂直方向的大小。此外,在以下的说明中,举出使第1行的栏R1中记述的GUI对象识别符为“ID1”的GUI对象移动显示的动画为例进行说明。
图9是表示根据本发明的实施方式中的脚本数据在显示装置30的画面301上动画显示的GUI的画面图。该GUI是使GUI对象OB1向右斜下侧移动的GUI。GUI对象OB1是图6所示的GUI对象识别符为ID1的GUI对象。
在动画开始时,GUI对象OB1位于位置PS0。以后,每当更新帧,GUI对象OB1就向右斜下方移动,到达位置PS1、PS2、PS3、PS4、PS5,最终移动到位置PS6。若用户操作了输入装置40,则鼠标指针PT根据该操作在画面301上移动。
此外,在图9中,GUI对象OB1位于位置PS3的第3帧是以图8所示的变更预定信息的时间戳(timestamp)表示的描绘时间点,动画控制部12对解释部11输出包含对象OB1坐标的本地变量。在此,作为GUI对象OB1的坐标,例如采用GUI对象OB1的左上顶点的坐标。但是,这是一例,也可以采用右上、右下、左下、中心等坐标。
图7是表示构成在动画开始时解释部11作为描绘请求而向动画控制部12输出的脚本变量的属性信息Z1的一例的图。在该属性信息Z1中,包含存储GUI对象识别符、开始点、结束点及变化量的栏。对象识别符是作为动画对象的GUI对象的识别符。在图7的例子中,可知,在GUI对象识别符的一栏中存储有ID1,该属性信息Z1包含图9所示的GUI对象OB1的属性信息。此外,当存在多个作为动画对象的GUI对象时,属性信息Z1中包含与多个GUI对象有关的属性信息。此外,属性信息Z1预先记述在脚本数据中。
开始点表示GUI对象在动画开始时的位置。在图7的例子中,作为开始点,定义为X坐标=100,Y坐标=100,因此如图9所示,GUI对象OB1在动画开始时,显示在X坐标=100,Y坐标=100的位置PS0。
结束点表示GUI对象在动画结束时的位置。在图7的例子中,定义为X坐标=130,Y坐标=160,因此GUI对象OB1在动画结束时显示在X坐标=130,Y坐标=160的位置PS6。
变化量是表示每当动画处理前进1帧,GUI对象的位置就相应地变化多少的值。在图7的例子中,作为变化量,定义为X成分=5,Y成分=10,因此GUI对象OB1每当前进1帧,X坐标就增加5,Y坐标增加10。此外,变化量的单位是像素。
图8是表示本发明的实施方式1的变更预定信息IF1的一例的图。变更预定信息IF1包括存储时间戳、X坐标及Y坐标的栏。在图8所示的变更预定信息IF1的例子中,包含有在三个描绘时间点的GUI对象OB1的位置。
时间戳表示动画控制部12对解释部11通知本地变量的描绘时间点,在本实施方式中,采用表示在将动画开始时所显示的帧作为第0帧时为第几帧的值。在图8的例子中,作为时间戳,定义了0、3、6,因此动画控制部12将从动画开始时起第0帧、第3帧、第6帧的GUI对象OB1的位置输出至解释部11。此外,由于第0帧表示动画开始时间点,第6帧表示动画的结束时间点,因此动画控制部12也可以不输出GUI对象OB1的位置。
在此,变更预定信息IF1由动画控制部12以如下所述方式生成。首先,在动画的开始时间点,动画控制部12从解释部11受理包含图6所示的栏R1的属性信息及图7所示的属性信息Z1的脚本变量。
接着,动画控制部12参照图7所示的属性信息Z1生成在预先确定的时间戳的GUI对象OB1的位置。在图8的例子中,由于将0、3、6定义为预先确定的时间戳,因此动画控制部12根据图7所示的开始点及变化量求出第3帧及第6帧的GUI对象OB1的位置,由此生成图8所示的变更预定信息IF1。然后,动画控制部12将所生成的变更预定信息IF1通知给解释部11,并且存储在变更预定信息存储部23中。另外,解释部11将被通知的变更预定信息IF1存储在变更预定信息存储部22中。
此外,在图8中,例举出时间戳为三个的情况进行了说明,但并不限定于此,也可以采用两个或四个以上的指定值作为预先确定的时间戳。在此情况下,动画控制部12可以利用图7所示的开始点及变化量求出各时间戳的GUI对象OB1的位置。
返回图1,非同步标志存储部24存储由解释部11设定的非同步标志。脚本变量存储部25存储解释部11管理的脚本变量、且为变更预定信息以外的脚本变量。本地变量存储部26存储由动画控制部12依次更新的本地变量、且为变更预定信息以外的本地变量。显示装置30采用等离子体显示器或液晶显示器,显示由动画描绘装置10描绘的动画。
图2是表示本发明的实施方式1的动画描绘装置10的结构要素间的数据收发的时序图。
首先,若发生了用于动画显示GUI的输入事件,则解释部11使脚本变量中包含记载于图6的栏R1的属性信息及图7所示的属性信息Z1,并将该脚本变量作为描绘请求输出至动画控制部12(时刻TM1)。
接着,动画控制部12若受理了描绘请求,则生成变更预定信息IF1,并输出至解释部11(时刻TM2)。接着,动画控制部12每当到达1帧的描绘时刻就对图形描绘控制部13输出描绘指示(时刻TM3至TM5)。
此外,图形描绘控制部13每当受理了描绘指示就生成图形处理部14可执行的低级别的描绘指令,并让图形处理部14描绘1帧GUI。然后,图形描绘控制部13在1帧的描绘结束后,将结束通知输出至动画控制部12。
时刻TM5相当于变更预定信息IF1的时间戳表示的描绘时间点。因此,动画控制部12将当前的本地变量作为变更通知输出至解释部11。
通过重复上述的处理,对GUI进行动画显示。并且,若从图形描绘控制部13输出针对最终的帧的描绘指示的结束通知,则动画控制部12将表示动画已结束的结束通知输出至解释部11(时刻TM6)。
图3是表示本发明的实施方式1的动画描绘装置10的处理的流程图。在步骤S1,解释部11依次解释脚本数据,若对动画描绘指示进行了解释,则将描绘请求输出至动画控制部12。在此,解释部11将包含图6的栏R1所示的属性信息及图7所示的属性信息Z1的脚本变量作为描绘请求而输出。另外,解释部11将输出至动画控制部12的脚本变量存储在脚本变量存储部25中。
接着,动画控制部12根据脚本变量生成图8所示的变更预定信息IF1(步骤S2),将其存储在变更预定信息存储部23中,并输出至解释部11。
接着,解释部11将从动画控制部12输出的变更预定信息IF1变换为脚本变量,存储在变更预定信息存储部22中,并激活非同步标志(步骤S3)。
接着,动画控制部12通过将从解释部11作为描绘请求而输出的脚本变量变换为本地变量,将本地变量初始化(步骤S4)。此外,本地变量概念性地与图6的栏R1所示的属性信息及图7所示的属性信息Z1为同一内容。
接着,动画控制部12将用于描绘第0帧GUI的描绘指示输出至图形描绘控制部13(步骤S5)。由此,图形描绘控制部13对图形处理部14输出描绘指令,在显示装置30显示第0帧的GUI。
即,由于图7所示的属性信息Z1的开始点为X坐标=100,Y坐标=100,因此动画控制部12对图形描绘控制部13输出描绘指示,以便如图9所示那样在位置PS0描绘GUI对象OB1。
接着,动画控制部12在到达1帧的描绘时间点后,为了描绘下一帧而更新本地变量,将反映了更新后的本地变量的描绘指示输出至图形描绘控制部13,并休眠指定时间(步骤S6)。在此,作为指定时间,例如可以采用从动画控制部12输出描绘指示之后到图形描绘控制部13输出通知1帧的描绘结束的结束通知为止的期间。即,动画控制部12根据由图形描绘控制部13输出的结束通知而解除休眠。
另外,动画控制部12将在步骤S4中已变换为本地变量的本地变量的开始点的X坐标=100、Y坐标=100分别增加作为变化量的X成分=5,Y成分=10,计算第1帧GUI对象OB1的位置(X坐标=105,Y坐标=110),使本地变量包含计算出的位置,来更新本地变量。在此情况下,动画控制部12例如可以将在图7所示的属性信息Z1中追加了用于存储GUI对象OB1的当前位置的栏后的变量作为本地变量。
然后,在第2帧以后,每当前进1帧,动画控制部12就将GUI对象OB1的当前位置的X坐标及Y坐标分别增加作为变化量的X成分=5及Y成分=10,来更新本地变量。
接着,动画控制部12判断动画是否已结束(步骤S7)。在此,动画控制部12可以在本地变量的当前位置与图7所示的结束点一致时,判断动画已结束。
接着,动画控制部12当判断动画尚未结束时(在步骤S7为“否”),判断当前帧是否相当于变更预定信息IF1的时间戳表示的帧(步骤S8)。即,在当前帧为第3帧时,动画控制部12在步骤S8判断为“是”,将当前的本地变量作为变更通知输出至解释部11(步骤S9),使处理返回步骤S6。由此,谋求脚本变量与本地变量之间的同步,解释部11能够识别GUI对象OB1的当前位置。
此外,受理了变更通知的解释部11将本地变量变换为脚本变量,在图7所示的属性信息Z1中追加当前位置的栏,在该栏中写入GUI对象OB1的当前位置,从而更新脚本变量。
另一方面,在当前帧不相当于变更预定信息IF1的时间戳表示的帧时,即,当前帧不相当于第3帧时,动画控制部12在步骤S8判断为“否”,使处理返回步骤S6。
当在步骤S7动画控制部12判断动画已结束时(在步骤S7为“是”),将结束通知输出至解释部11(步骤S10)。接着,解释部11取消非同步标志(步骤S11),使处理结束。
通过以上的处理,动画控制部12不是针对每1帧将本地变量输出至解释部11,而是在时间戳表示的帧将本地变量输出至解释部11,因此处理负担减轻,能够防止GUI的动画的执行速度的降低。
图4是表示本发明的实施方式1的变形例的动画描绘装置10的结构要素间的数据收发的时序图。在图2中,动画控制部12在时间戳所示的描绘时间点,将本地变量作为变更通知输出至解释部11。
另一方面,在图4所示的变形例中,动画控制部12在从解释部11受理了同步指示时,将本地变量输出至解释部11。
图4所示的时刻TM1至TM4、TM6与图2相同,因此省去说明。在时刻TM5,解释部11对动画控制部12输出同步指示。这是由于在对GUI对象OB1进行动画显示的途中,发生了用户点击鼠标的输入事件。
接到同步指示的动画控制部12将包含GUI对象OB1的当前位置的本地变量作为当前信息输出至解释部11。
解释部11若受理当前信息,则将本地变量变换成脚本变量,更新脚本变量。由此,脚本变量和本地变量成为相同的值,两变量同步。
图5是表示本发明的实施方式1的变形例的动画描绘装置10的处理的流程图。图5的流程图是在图4的时刻TM5输出了同步指示时由动画描绘装置10执行的流程图。
首先,若用户点击鼠标而发生输入事件(在步骤S21为“是”),解释部11判断非同步标志是否被激活(步骤S22)。另一方面,当未发生输入事件时(在步骤S21为“否”),处理返回步骤S21。
解释部11在非同步标志被激活时(在步骤S22为“是”),对动画控制部12输出同步指示(步骤S23)。在此,当非同步标志被激活时,动画处于执行途中,脚本变量与本地变量不同步。因此,当前的脚本变量不表示GUI对象OB1的当前位置。为此,解释部11为了使脚本变量与本地变量同步而对动画控制部12输出同步指示。
接着,动画控制部12将当前的本地变量作为当前信息输出至解释部11(步骤S24)。接着,解释部11将本地变量变换为脚本变量,更新脚本变量,使脚本变量与本地变量同步(步骤S25)。
由此,解释部11能够识别GUI对象OB1的当前位置,用户能够判断鼠标指针PT与GUI对象OB1是否重叠。
在此,当判断GUI对象OB1与鼠标指针PT重叠时,解释部11可以判断用户点击了GUI对象OB1,并执行预先规定在点击了GUI对象OB1时执行的处理程序。另一方面,当判断GUI对象OB1与鼠标指针PT不重叠时,可以不执行在GUI对象OB1的点击时要执行的处理程序。
此外,解释部11根据GUI对象OB1的当前的位置确定图6所示的GUI对象OB1的宽度及高度,根据所确定的宽度及高度设定描绘有GUI对象OB1的区域。并且,若鼠标指针PT位于该区域内,则解释部11可以判断鼠标指针PT与GUI对象OB1重叠。
另一方面,在步骤S22,若未激活非同步标志(在步骤S22为“否”),则由于脚本变量与本地变量同步,因此解释部11参照脚本变量(步骤S26),识别当前的GUI对象OB1的位置。
在上述说明中,作为变更预定信息IF1,如图8所示采用时间戳,但也取而代之采用从动画开始后的时刻。另外,作为变更预定信息IF1,采用GUI对象OB1的位置作为属性信息,但并不限定于此,除了GUI对象OB1的位置以外或者代替GUI对象OB1的位置,可以包含GUI对象OB1的大小、放大缩小率、旋转率(侧滚角、俯仰角、侧滑角)、颜色、透过度及图像的至少其中之一。
在此情况下,在图8所示的变更预定信息IF1中,可以设置大小、放大缩小率、旋转率(侧滚角、俯仰角、侧滑角)、颜色、透过度及图像的栏,对每个时间戳规定这些信息。
另外,在上述说明中,动画控制部12生成变更预定信息IF1,但也可以是解释部11生成变更预定信息IF1。在此情况下,解释部11与动画控制部12同样,可以在动画开始时,根据图6的栏R1所示的属性信息及图7所示的属性信息Z1等生成图8所示的变更预定信息IF1。
然后,解释部11可以将所生成的变更预定信息IF1存储在变更预定信息存储部22中,并输出至动画控制部12。此外,从解释部11受理了变更预定信息IF1的动画控制部12可以将变更预定信息IF1变换为本地变量,并存储在变更预定信息存储部23。
由此,解释部11及动画控制部12双方都能够参照变更预定信息IF1,从而能够减少在解释部11及动画控制部12间收发的数据量。
此外,可知,作为GUI对象的属性信息有调焦(focus)的属性。该调焦的属性是表示GUI对象当前是否为操作对象的属性信息。作为调焦的属性,存在“聚焦”或“离焦”这两种状态。例如,当GUI对象与鼠标指针重叠时,调焦的属性成为“聚焦”。在某一GUI对象的调焦的属性表示“聚焦”的状态的情况下,当动画开始并激活了非同步标志时,可以将该GUI对象的调焦的属性变更为“离焦”。该结构例如对于以下GUI的动画是有效的,即,假定动画开始后GUI对象开始移动,从鼠标指针与GUI对象重叠的状态变为不重叠的状态。
另外,也可以在动画结束后取消了非同步标志的情况下,解释部11根据GUI对象的结束点的坐标和当前的鼠标指针的位置来判断GUI对象与鼠标指针是否重叠,并以该判断结果更新调焦的属性,将调焦的属性更新为最新状态。
根据以上说明的变形例,解释部11在动画的执行途中能够适宜地使脚本变量与本地变量同步,因此即使在动画的执行途中,也能够判断鼠标指针PT与GUI对象OB1是否重叠。另一方面,解释部11在无需使脚本变量与本地变量同步时不进行同步处理,动画控制部12依次更新本地变量来执行动画的描绘处理。因此,动画控制部12不从解释部11导入脚本变量就能够执行动画的描绘处理。其结果是,能够防止动画的执行速度的降低。
此外,也可以将实施方式1的动画描绘装置10和变形例的动画描绘装置10组合。即,动画控制部12可以根据时间戳输出本地变量,并且解释部11可以根据需要使脚本变量与本地变量同步。
(实施方式2)
实施方式2所涉及的动画描绘装置10的特征在于,当在动画执行中鼠标指针PT与GUI对象的重叠状态发生变化时,动画控制部12对解释部11输出本地变量。图10表示本发明的实施方式2所涉及的动画描绘装置10的结构图。此外,在本实施方式中,对与实施方式1相同的部分使用相同的符号并省略其说明。另外,在本实施方式的说明中也参照图6、图7、图9。
在本实施方式中,解释部11在解释了动画描绘指示时,将显示在画面301上的鼠标指针PT的位置输出至动画控制部12。
动画控制部12将从解释部11输出的鼠标指针PT的位置变换为本地变量,并存储在指针信息存储部28中。
然后,当在动画的执行中鼠标指针PT与构成GUI的GUI对象OB1的重叠状态发生变化时,动画控制部12将此时的本地变量输出至解释部11。
在此,动画控制部12每当更新本地变量,就参照存储在指针信息存储部28的鼠标指针PT的位置对两者进行比较,由此可以判断GUI对象OB1与鼠标指针PT的重叠状态是否发生变化。
具体而言,在前次的判断时GUI对象OB1与鼠标指针PT重叠的情况下,当GUI对象OB1与鼠标指针PT变得不重叠时,动画控制部12可以判断GUI对象OB1与鼠标指针PT的重叠状态发生了变化。
另一方面,在前次的判断时GUI对象OB1与鼠标指针PT不重叠的情况下,当GUI对象OB1与鼠标指针PT重叠时,动画控制部12可以判断GUI对象OB1与鼠标指针PT的重叠状态发生了变化。
更具体而言,动画控制部12根据当前的本地变量确定GUI对象OB1的位置。然后,动画控制部12将所确定的位置作为GUI对象OB1的左上的顶点,根据存储于图6所示的栏R1中的GUI对象OB1的宽度及高度设定规定的矩形区域。然后,动画控制部12可以当存储于指针信息存储部28的鼠标指针PT的位置位于该矩形区域的区域内时,判断GUI对象OB1与鼠标指针PT重叠,当鼠标指针PT未位于该矩形区域内时,判断鼠标指针PT与GUI对象OB1不重叠。
并且,当1帧前的重叠状态的判断结果与当前帧的重叠状态的判断结果不同时,动画控制部12可以判断GUI对象OB1与鼠标指针PT的重叠状态发生了变化。
指针信息存储部27存储由解释部11管理的鼠标指针PT的位置。指针信息存储部28存储由动画控制部12管理的鼠标指针PT的位置,该鼠标指针PT的位置是解释部11管理的鼠标指针PT的位置的复制。
如图9所示,鼠标指针PT通过用户进行利用输入装置40的操作而移动。在此,解释部11可以基于从输入装置40输出的信号检测鼠标指针PT在画面301上的位置。
在图9的例子中,输入事件发生时的鼠标指针PT的左上的坐标位于(107,113)。因此,解释部11将(107,113)作为鼠标指针PT的位置检测。以下,将鼠标指针PT的左上的坐标作为鼠标指针PT的位置进行说明。
图11是表示本发明的实施方式2的动画描绘装置10的结构要素间的数据收发的时序图。
首先,在时刻TM1,解释部11若对记述在脚本数据中的动画描绘指示进行了解释,则将用于登记此时的鼠标指针PT的位置的指针信息登记指示输出至动画控制部12。由此,动画控制部12将输入事件发生时的鼠标指针PT的位置存储在指针信息存储部28中。
接着,与图2同样,解释部11将描绘请求输出至动画控制部12(时刻TM2)。即,包含图6的栏R1所示的属性信息及图7所示的属性信息Z1的脚本变量作为描绘请求而被输出。此时,动画控制部12判断GUI对象OB1与鼠标指针PT是否重叠。
接着,与图2同样,动画控制部12在与图形描绘控制部13之间重复进行描绘指示及结束通知的发送接收,并一边依次更新本地变量一边对GUI进行动画显示(时刻TM3,TM4)。在此,动画控制部12每当更新本地变量,就比较存储于指针信息存储部28的鼠标指针PT的位置和本地变量表示的GUI对象OB1的位置,监视鼠标指针PT与GUI对象OB1的重叠状态是否发生变化。
接着,在时刻TM5,动画控制部12在判断GUI对象OB1与鼠标指针PT的重叠状态发生了变化时,将变更通知输出至解释部11。
在此,与图2同样,动画控制部12将本地变量作为变更通知输出至解释部11。由此,解释部11能够识别GUI对象OB1的当前的位置。
接着,与图2同样,若动画结束,则动画控制部12将结束通知输出至解释部11(时刻TM6)。
图12是表示本发明的实施方式2的动画描绘装置10的处理的流程图。解释部11依次解释脚本数据,若对动画描绘指示进行了解释,则将用于登记当前的鼠标指针PT的位置的指针信息登记指示及描绘请求输出至动画控制部12(步骤S31)。由此,动画控制部12能够识别动画开始时的鼠标指针PT的位置。此外,作为鼠标指针PT的位置,采用鼠标指针PT的坐标,但不限定于此,也可以采用鼠标指针PT的区域。作为鼠标指针PT的区域,可以采用能够确定图9所示的鼠标指针PT的轮廓的信息。
接着,动画控制部12将从解释部11输出的指针登记信息表示的鼠标指针PT的位置存储在指针信息存储部28中(步骤S32)。
由于步骤S33至S36、S39与图3所示的步骤S4至S7、S10相同,因此省略说明。
在步骤S37,动画控制部12比较本地变量和存储于指针信息存储部28的鼠标指针PT的位置,判断GUI对象OB1与鼠标指针PT的重叠状态是否发生变化。并且,动画控制部12在判断鼠标指针PT与GUI对象OB1的重叠状态发生了变化时(在步骤S37为“是”),使处理进入步骤S38,当重叠状态未变化时(在步骤S37为“否”),使处理返回步骤S35。
在图9的例子中,假设鼠标指针PT的位置未变化,动画开始后,在第2帧的描绘时间点,GUI对象OB1位于位置PS2,重叠状态从“重叠”变化为“不重叠”。
具体而言,在图9中,当GUI对象OB1位于位置PS2时,GUI对象OB1左上的顶点的坐标为(110,120),鼠标指针PT的位置为(107,113),因此GUI对象OB1与鼠标指针PT不重叠。因此,动画控制部12判断GUI对象OB1与鼠标指针PT的重叠状态发生了变化,将包含位置PS2的本地变量作为变更通知输出至解释部11(步骤S38)。
由此,当在动画的执行途中发生输入事件而需要识别GUI对象OB1的当前位置时,解释部11通过从动画控制部12导入本地变量,能够识别GUI对象OB1的当前的位置。并且,解释部11根据当前的鼠标指针PT的位置和识别出的当前的GUI对象OB1的位置能够检测两者的重叠状态的变化。
并且,当检测出重叠状态的变化时,例如根据该变化执行预先确定的程序。由此,解释部11即使在动画执行中也能够应对来自用户的操作。
另一方面,若动画的显示开始,则动画控制部12依次更新本地变量并执行动画的描绘处理,因此能够提高动画的执行速度。
此外,在上述说明中,举出了只输出一次指针信息登记指示的情况为例进行说明,但在动画的执行途中,也可以多次输出指针信息登记指示。在此情况下,解释部11例如可以在发生了点击鼠标按钮等输入事件时输出指针信息登记指示。并且,解释部11可以使指针信息登记指示包含发生输入事件时的鼠标指针PT的位置,并将该位置存储在指针信息存储部27中。
受理了指针信息登记指示的动画控制部12可以将该指针信息登记指示所包含的鼠标指针PT的位置存储在指针信息存储部28中,每当更新本地变量就将该鼠标指针PT的位置与本地变量进行比较,从而检测GUI对象OB1与鼠标指针PT的重叠状态的变化。
此外,图1及图10所示的各块典型地通过集成电路即LSI来实现。在通过LSI实现的情况下,可以使各块分别地单芯片化,也可以以包含一部分块或全部块的方式单芯片化。
在此,LSI根据集成度的差异,包含有IC、LSI、系统LSI、特大(super)LSI、超大(ultra)LSI等。
另外,作为集成电路化的方法,并不限于LSI,也可以通过专用电路或通用处理器来实现。另外,也可以利用在LSI制造后可编程的FPGA(Field Programmable Gate Array,现场可编程门阵列)、可重建LSI内部的电路单元的连接或设定的可重构处理器(reconfigurable processor)。
进一步,如果随着半导体技术的进步或者通过派生的其他技术而出现了代替LSI集成电路化的技术,当然也可以利用该技术来实现各块的集成化。作为代替LSI的集成电路的技术,可能有例如基于生物技术的技术。
另外,图1及图10所示的各块也可以由软件构成。在此情况下,可以通过将用于使计算机作为动画描绘装置10而发挥功能的动画描绘程序安装在计算机中,来实现图1及图10所示的各块。该动画描绘程序可以存储在DVD-ROM、CD-ROM等计算机可读取的记录介质中提供给用户。另外,也可以将动画描绘程序存储WEB服务器,通过网络下载来提供给用户。
在此情况下,图1所示的解释部11至图形描绘控制部13例如由CPU构成,图形处理部14例如由GPU构成,脚本数据存储部21至本地变量存储部26例如由RAM、ROM、闪存器等可改写的存储装置构成。
另外,在图10中,解释部11至图形描绘控制部13由CPU构成,图形处理部14由GPU构成,指针信息存储部27、28、脚本变量存储部25及本地变量存储部26由存储装置构成。
接着,对本发明的具体例进行说明。图13是表示在本发明的实施方式1及2的动画描绘装置10中利用的脚本数据的一例的图。图14是表示在现有的GUI动画描绘装置中利用的脚本数据的一例的图。以下,对图13和图14的脚本数据进行对比说明。首先,根据图14的现有的脚本数据进行说明。
第1行至第3行:是HTML文件的开始声明。在第3行,声明该脚本数据的类型为样本脚本。
第4行至第5行:声明JavaScript(注册商标)内嵌于HTML。
第6行:规定用于决定动画的1帧间隔的定时器的值。
第8行至第12行:是用于保存二维坐标的类(class)的声明。
第14行:是保存GUI对象的结束点的变量的数据结构的声明。
第15行:是保存GUI对象的变化量的变量的数据结构的声明。
第17行至第26行:是样本脚本的主程序(main routine)。
在第19行至第20行声明GUI对象的开始点的变量,开始点的值保存在该变量中。在第21行至第22行声明结束点的变量,结束点的值保存在该变量中。在第23行至第24行声明变化量的变量,变化量的值保存在该变量中。在第25行,调用动画开始的函数(anime)。该第25行的函数相当于动画描绘指示。
第28行至第31行:是在动画结束时调用的函数(done)的声明。
第33行至第40行:是使1帧的描绘开始的函数(anime)的声明。在第35行至第38行,结束点和变化量被分解成X成分及Y成分,并临时保存在变量中,在第39行调用描绘1帧的函数(moveObj)。
第42行至第56行:是描绘1帧的函数(moveObj)的声明。在第44行取得动画对象的GUI对象的ID。在第45行,将GUI对象的X成分加上在第23行声明过的X成分的变化量。在第46行,将GUI对象的Y成分加上在第24行声明过的Y成分的变化量。在第47行判断动画是否结束,若尚未结束,执行第49行至第50行,若已结束,执行第54行。
在第49行至第50行,每当经过waitTime就执行函数(moveObj)来描绘1帧。在第54行,调用在动画结束时调用的函数(df=done)。
第57行至第58行:是内嵌于HTML文件的JavaScript(注册商标)的结束声明。
第59行:是HTML文件的HEAD部的结束声明。
第60行:是用于在HTML文件的加载时调用样本脚本的主程序的声明。
第61行:是表示动画对象的GUI对象的字符串的声明,指定“obj”作为用于指定GUI对象的“id”。
第62行至第63行:是HTML文件的结束声明。
这样,在现有的脚本数据中,例如,每当如第44行所示那样描绘1帧,就执行用于取得id的检索处理,难以提高动画的执行速度。
接着,对图13进行说明。在图13中,与图14相同的脚本省略说明。
第33行至第36行:是与现有的脚本数据不同之处。通过第35行的“nativeAnime”,控制被移动到动画控制部12。即,解释部11依次解释第17至26行的主程序的脚本,若对作为动画描绘指示的第25行的“anime”进行了解释,则根据第35行的“nativeAnime”,将“ObjName”、“ep”、“d”、“df”等脚本变量作为描绘请求输出至动画控制部12,将控制移动到动画控制部12。
由此,动画控制部12通过执行与“nativeAnime”相对应的本机语言的程序模块,来描绘动画。
然后,动画控制部12在动画结束后将结束通知输出至解释部11。由于动画控制部12执行以本机语言记述的程序模块来描绘动画,因此无需每当描绘1帧就执行如图14的第44行所示的检索处理。因此,根据动画描绘装置10,能够提高动画的执行速度。
此外,图13及图14所示的脚本数据是用于表示与现有的GUI动画描绘装置之间的脚本的差异的典型例,省略了表示该主旨以外的内容。另外,根据该主旨能够进行各种变形。
上述的动画描绘装置的技术特征能够归纳如下。
(1)上述动画描绘装置是通过执行以解释型的脚本语言记述的脚本数据对GUI(图形用户界面)进行动画显示的动画描绘装置,包括:以解释方式依次解释所述脚本数据的解释部;以及通过执行以本机语言记述的程序模块,对所述GUI进行动画显示的动画控制部,所述解释部在对利用指定的脚本变量定义的动画描绘指示进行了解释时,将描绘请求输出至所述动画控制部,所述动画控制部在受理了所述描绘请求时,将所述脚本变量变换为所述本机语言形式的本地变量,并一边依次更新所述本地变量一边对所述GUI进行动画显示。
根据该结构,动画控制部能够一边依次更新独立于解释部的本地变量一边对GUI进行动画显示。因此,动画控制部无需在动画的途中对解释部进行访问,从而没有访问解释部时在解释部产生的检索处理,其结果能够提高动画的执行速度。
(2)较为理想的是,所述动画控制部基于所述脚本变量,生成表示从动画开始到结束为止的1个或多个描绘时间点的所述GUI的状态的变更预定信息,当到达了所述变更预定信息表示的描绘时间点时,将在该描绘时间点的所述本地变量输出至所述解释部,并在动画结束时将结束通知输出至所述解释部。
根据该结构,动画控制部仅在到达了变更预定信息表示的描绘时间点时,将本地变量输出至解释部。由此,动画控制部与解释部之间的数据收发的次数大幅减少,其结果能够防止动画的执行速度的降低。
(3)较为理想的是,所述动画控制部将所述变更预定信息输出至所述解释部。
根据该结构,由于解释部也保持变更预定信息,因此能够减少在解释部及动画控制部间收发的数据量,能够谋求动画控制部及解释部的处理负担的减轻。
(4)较为理想的是,所述解释部在动画开始时,激活表示所述脚本变量与所述本地变量不同步的非同步标志,在接收到来自所述动画控制部的所述结束通知时,取消所述非同步标志,在所述非同步标志被激活期间当用户操作输入装置而发生了指定的输入事件时,执行让所述动画控制部输出所述本地变量的同步处理。
根据该结构,当发生了输入事件时,解释部强制性地让动画控制部输出当前的本地变量,使脚本变量与本地变量同步。由此,解释部能够识别当前的GUI对象的状态,能够进行判断在发生了输入事件时鼠标指针与GUI对象是否重叠的处理等。
(5)较为理想的是,所述解释部基于所述脚本变量,生成表示从动画开始到结束为止的1个或多个描绘时间点的所述GUI的状态的变更预定信息,将所述变更预定信息输出至所述动画控制部,所述动画控制部在到达了所述变更预定信息表示的描绘时间点时,将在该描绘时间点的所述本地变量输出至所述解释部,并在动画结束时将结束通知输出至所述解释部。
根据该结构,与(2)同样,能够防止动画的执行速度的降低。另外,由于变更预定信息由解释部生成,因此能够减轻动画控制部的处理负担。
(6)较为理想的是,所述解释部将所述变更预定信息输出至所述动画控制部。
根据该结构,由于动画控制部也保持变更预定信息,因此能够减少在解释部及动画控制部间收发的数据量,能够减轻动画控制部及解释部的处理负担。
(7)较为理想的是,所述解释部在将所述变更预定信息输出至所述动画控制部时,激活表示所述动画描绘指示正在执行中的标志,在接收到所述结束通知时取消所述标志,在所述标志被激活期间发生了指定的输入事件时,执行让所述动画控制部输出所述本地变量的同步处理。
根据该结构,能够得到与(4)相同的效果。
(8)较为理想的是,所述变更预定信息利用示意是动画开始后的第几帧的时间戳来表示所述描绘时间点。
根据该结构,由于通过时间戳来指定描绘时间点,因此动画控制部仅通过计数动画开始后被更新的帧数,就能够检测本地变量的输出时刻。
(9)较为理想的是,所述变更预定信息包含所述描绘时间点的GUI对象的属性信息。
根据该结构,由于能够利用以脚本数据定义的属性信息生成变更预定信息,因此能够通过简便的处理生成变更预定信息。
(10)较为理想的是,所述解释部在解释了所述动画描绘指示时,将显示在画面上的指针的位置输出至所述动画控制部,所述动画控制部将从所述解释部输出的指针的位置存储在存储装置中,在动画的执行中比较存储在所述存储装置中的指针的位置和所述本地变量,当检测出构成所述GUI的GUI对象与所述指针之间的重叠状态发生了变化时,将此时的所述本地变量输出至所述解释部。
根据该结构,当在动画的执行途中发生输入事件而需要识别GUI对象的当前的状态时,解释部通过从动画控制部12导入本地变量,能够识别GUI对象的当前的状态。
(11)较为理想的是,上述的动画描绘装置还包括控制图形处理部的图形描绘控制部,所述动画控制部每当到达1帧的描绘时间点,就更新所述本地变量,并将用于描绘1帧的描绘指示输出至所述图形描绘控制部,所述图形描绘控制部在从所述动画控制部受理了描绘指示时,将所受理的描绘指示分解成所述图形处理部可执行的低级别的描绘指令,并将描绘指令输出至所述图形处理部。
根据该结构,由于动画控制部让图形描绘处理部执行低级别的描绘处理,因此能够减轻动画控制部的处理负担。
(12)较为理想的是,所述解释部利用散列检索对所述脚本变量进行访问。
该结构中,虽然利用处理负担较大的散列检索访问脚本变量,但通过采用(1)等结构,能够减少该访问的次数,从而能够提高动画的执行速度。
产业上的可利用性
本发明所涉及的GUI动画描绘装置能够高速地描绘以解释型的脚本语言记述的GUI动画,因此在搭载Web浏览器的设备中是有用的。