独立表达式动画的制作方法

文档序号:13350419阅读:108来源:国知局
独立表达式动画的制作方法



背景技术:

计算设备可使用多线程处理以更高效地向用户呈现用户界面。多线程处理,在同一处理器中或跨处理核中的多个处理器,几乎同时执行多个指令序列。处理核可执行具有主代码集(诸如应用代码集)的主进程,以执行用户界面模块的基础设施。主代码集可将任务卸载到由处理核当做次代码线程执行的具有次代码集的次进程。例如,用户界面应用代码线程可将用户界面的呈现方面卸载到作为次代码线程执行的次代码集以供渲染。因此,次代码线程可被称为渲染代码线程。次代码线程可渲染用户界面对象,诸如动画图形或位图图像,称为组合对象。

概述

提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。

以下讨论的各实施例涉及在次代码集内执行独立表达式以促进取得目标组合对象的动态对象读数。用户界面系统可执行用户界面的主代码线程和次代码线程。主代码线程可生成驻留在次代码线程中的独立表达式。独立表达式可收集目标组合对象的驻留在次代码线程中的输入集。次代码线程可基于输入集渲染目标组合对象。

附图

为了描述可以获得本发明的上文所列举的及其他优点和特征,下面将通过参考所附图形中所示出的特定实施例,阐述和呈现更具体的描述。可以理解这些图形只描绘了典型的实施例,因此,不被视为对其范围的限制,将通过使用各个附图并利用额外的特征和细节来描述和说明各实现。

图1以框图示出了计算设备的一个实施例。

图2以框图示出了多线程体系结构的一个实施例。

图3以框图示出了表达式体系结构的一个实施例。

图4以框图示出了表达式链的一个实施例。

图5以流程图示出了执行多线程用户界面的方法的一个实施例。

图6以流程图示出了渲染多线程用户界面的方法的一个实施例。

图7以流程图示出了执行主代码线程的方法的一个实施例。

图8以流程图示出了执行次代码线程的方法的一个实施例。

图9以流程图示出了处理源组合对象的方法的一个实施例。

图10以流程图示出了处理目标组合对象的方法的一个实施例。

图11以流程图示出了处理独立表达式的方法的一个实施例。

图12以流程图示出了次线程以渲染具有动态输入的目标动画的方法的一个实施例。

详细描述

下面将详细地讨论各实施例。尽管讨论了具体实现,但是,应该理解,这只是为了说明。那些精通相关技术的人员将认识到,在不偏离本发明的主题的精神和范围的情况下,可以使用其他组件和配置。各实现可以是用户界面系统,有形的机器可读介质,该有形的机器可读介质在其上存储有详述用于至少一个处理器的方法,或机器实现的方法的指令集。

分开的线程可能阻止开发者描述与动画中的其它对象属性相关的对象属性。分开的进程可操作每个线程,使得每个线程访问不同存储器区域,阻止容易的协作。通过使用表达式,应用代码可执行应用编程接口调用来通过将它们与操作和条件的富集组合来将用户界面系统中对象属性的值描述为其它对象属性的函数。表达式可以是独立的,因为表达式可收集驻留线程或进程中对象属性的值而不与其它线程或进程交互。代码线程可在运行时独立对独立表达式求值,而没有来自在每一帧的基础上的调用对象的直接参与,允许对表达式值的实时更新。此外,次代码线程可使用表达式通过组合动画对象的相邻关键帧来在动画对象中插入中间值。例如,对于从0到1的范围中的表示两个关键帧之间的进展的动态值“p”,表达式“p*p”可指示关键帧值可根据二次方程曲线来被组合。

独立表达式可通过绑定与组合对象相连接。绑定是表达式和值的源之间的可动画化另一特性的联系。对象属性参考可将对象和表达式中的属性两者表示为对象句柄和属性句柄对,来定位对应的对象实例并访问那个实例内对应的属性。

独立表达式可具有源绑定或目标绑定。源绑定可指示要被输入到表达式的对象属性。在可变表达式节点被添加时,表达式可生成源绑定。源绑定可具有多个样本模式。在单个样本模式中,源绑定可一次读取属性并在表达式存在期持有那个值。在连续样本模式中,源绑定可在每次表达式被处理时刷新属性值。在循环样本模式中,源绑定可在每次动画迭代开始时刷新。通过使用连续样本模式或循环样本模式,独立表达式可从动态对象读取。动态对象具有随时间改变的属性值。例如,用户界面系统可动画化第一对象以朝着第二对象移动。随着第二对象移动,表达式可基于对第二对象的位置的改变来调整第一对象的轨道。

目标绑定可指示要输出到目标组合对象的对象属性。在目标被添加到表达式时,表达式可生成目标绑定。目标绑定可指示写表达式的输出的位置。绑定可与属性的特定信道相关联,允许各个信道通过不同独立的源被动画化。如果目标组合对象当前被绑定到独立表达式,并且主代码线程或次代码线程试图将目标组合对象绑定到另一表达式或试图直接改变目标值,则独立表达式可以以多种途径解决冲突。在第一绑定重点方法中,创建随后的绑定或直接设置属性值的尝试可被无效直到当前目标绑定被分离。在最后绑定重点方法中,创建随后的绑定的尝试自动分离当前目标绑定,同时直接设置属性值的尝试可被无效直到当前目标绑定被分离。在最后改变重点方法中,创建随后的绑定或直接设置属性值的尝试可自动盖写当前目标绑定。

对象属性参考可以是“弱参考”,允许被参考对象在绑定活动时被安排。如果与源绑定相关联的对象在绑定活动时被安排,则独立表达式可使用最后已知值。如果表达式不具有已知值,独立表达式可使用针对该类型的合适的“零”值。如果与目标绑定相关联的对象在绑定活动时被安排,则独立表达式可移除该绑定,如果没有其它目标可用则潜在地使得独立表达式变为活动。

因此,在一个实施例中,用户界面系统可在次代码集内执行独立表达式以促进取得目标组合对象的动态对象读数。用户界面系统可执行用户界面的主代码线程和次代码线程。主代码线程可生成驻留在次代码线程中的独立表达式。独立表达式可收集目标组合对象的驻留在次代码线程中的输入集。次代码线程可基于输入集渲染目标组合对象。

图1示出了可用作用户界面系统的示例性计算设备100的框图。计算设备100可组合硬件、软件、固件、和片上系统技术中的一个或多个来实现用户界面系统。计算设备100可包括总线110、处理核120、存储器130、数据存储140、输入设备150、输出设备160,以及通信接口170。总线110,或其他组件互连,可以允许在计算设备100的各组件之间的通信。

处理核120可以包括解释并执行一组指令的至少一个常规处理器或微处理器。至少一个处理器可被配置来执行主代码线程,诸如应用代码线程,以生成驻留在次代码线程中的独立表达式。至少一个处理器可被配置来执行次代码线程,诸如渲染代码线程,以使用独立表达式来收集在次代码线程中驻留的用于目标集合的输入集,并基于输入集渲染目标组合对象。该输入集可具有源组合对象的源组合对象读数或辅助对象的辅助对象读数的至少一个。替换地,输入集可具有动态对象读数。次代码线程可在独立表达式之前执行前导独立表达式。

主代码线程可生成次代码线程中的源组合对象。主代码线程可针对次线程中的源组合对象和独立表达式之间的源绑定执行源绑定调用。源组合对象可建立与独立表达式的源绑定。替换地,独立表达式可建立与源组合对象的源绑定。独立表达式可确定源绑定的采样模式。独立表达式可在源组合对象在活动源绑定期间已经被安排时用置换值替换源组合对象读数。

主代码线程可生成次代码线程中的目标组合对象。主代码线程可执行目标组合对象和独立表达式之间的目标绑定的目标绑定调用。目标组合对象可建立与独立表达式的目标绑定。替换地,独立表达式可执行目标绑定调用以建立与源组合对象的目标绑定。目标组合对象可在后继目标绑定调用和目标值改变的至少一个时将与独立表达式的目标绑定分离。

存储器130可以是存储信息和供处理核120执行的指令的随机存取存储器(ram)或另一种类型的动态数据存储。存储器130还可以存储在由处理核120执行指令期间使用的临时变量或其他中间信息。存储器130可被配置来存储由主代码线程(诸如应用代码)和次代码线程(诸如渲染代码线程)操作的用户界面。

数据存储140可以包括常规rom设备或为处理核120存储静态信息和指令的另一种类型的静态数据存储。数据存储140可包括任何类型的有形的机器可读介质,诸如,例如,磁性或光学记录介质,诸如数字视频盘,以及其对应的驱动器,或固态驱动器。有形的机器可读介质是存储机器可读的代码或指令而不是信号的物理介质。如此处所描述的将指令存储在计算机可读介质中与将指令传播或传输是有区别的,因为传播传输指令,而不是存储指令,诸如在其上存储了指令的计算机可读介质的情况下发生。因此,除非另作说明,以此或类似的形式对在其上存储了指令的计算机可读介质的参照,是指在其上面可以存储或保留数据的有形介质。数据存储140可以存储一组详述一种方法的指令集,当由一个或多个处理器执行时,指令集导致一个或多个处理器执行该方法。数据存储140也可以是用于存储具有主代码集和次代码集的用户界面代码集的数据库或数据库接口。

输入设备150可包括准许用户向计算设备100输入信息的一种或多种常规机制,诸如键盘、鼠标、语音识别设备、话筒、耳机、触摸屏152、触摸垫154、姿势识别设备156等等。输出设备160可包括向用户输出信息的一种或多种常规机制,包括显示屏162、打印机、一个或多个扬声器164、耳机、振动器,或介质,诸如存储器,或磁盘或光盘以及对应的盘驱动器。通信接口170可包括使计算设备100能与其他设备或网络进行通信的任何类似于收发器的机制。通信接口170可包括网络接口或收发器接口。通信接口170可以是无线、有线,或光接口。

计算设备100可以响应于处理核120执行诸如,例如,存储器130、磁盘,或光盘之类的计算机可读介质中所包含的指令序列,执行这样的功能。这样的指令可以从另一计算机可读介质(诸如数据存储140)或通过通信接口160从单独的设备被读取到存储器130。

图2以框图示出了多线程体系结构200的一个实施例。用户界面可具有主进程以及次进程,主进程诸如执行诸如应用代码线程的主代码线程210的应用进程,次进程诸如执行诸如渲染代码线程的次代码线程220的渲染进程。主代码线程210可处理主源组合对象212以生成次线程220中的次源组合对象222。组合对象可以是随时间改变的动态对象。主源组合对象212可驱动使得次源动画值224在次线程220中改变的主源动画值214。对次源动画值224的改变使得作为响应次源组合对象222的特性改变。

主代码线程210可处理主目标组合对象216以生成次线程220中的次目标组合对象226。次目标组合对象226可响应于次源组合对象222的改变而改变目标组合对象可以是目标用户界面动画。先前,次源组合对象226可将特性改变报告回给主源组合对象212。主源组合对象212可接着更新主目标组合对象216,主目标组合对象216将随后更新次目标组合对象226。

替换地,主代码线程210可处理与主目标组合对象216相关联的主表达式218以生成次代码线程220中的次表达式228。次表达式228可收集导致次目标组合对象226的特性改变的输入集的数据读数。次表达式228可以是独立的,因为次表达式228可接收驻留在次代码线程220中的数据而无需与主代码线程210交互。例如,次表达式228可从次源组合对象222接收源组合对象读数。次表达式228可从多个源收集数据读数。次表达式228可接收辅助对象230的辅助对象读数。辅助对象230是与用户界面代码分开的对象,诸如内部指南针或时钟。次表达式228可核对来自多个源的读数以供输入到次目标组合对象226中。

图3以框图示出了表达式体系结构300的一个实施例。表达式可收集一个或多个输入310供处理。表达式可具有将表达式连接到多种输入310源的一个或多个源绑定320。源可以是源组合对象或辅助对象。源绑定320可具有标识连接到表达式的源的源标识符322。源组合对象或独立表达式可在源绑定调用执行之际发起源绑定320的建立。源绑定调用是将代表源组合对象的读数的变量插入独立表达式的应用编程接口调用。源绑定320可从源组合对象取得源读数324。如果在活动源绑定320期间源已经被安排,则源绑定320可存储表示替换读数的置换值326。源绑定320在由表达式使用期间是活动的。置换值326可以是最后已知值或预定义的默认值。源绑定可具有指示源绑定320从源取得读数的频率的采样模式328。

表达式可具有表达式在源读数324上执行以创建用于输出340的值的一个或多个操作330。除了编译输入310,操作可执行其它数学操作,诸如偏移和乘法因子。输出340可具有将表达式连接到多种输出340目标(诸如目标组合对象)的一个或多个目标绑定350。目标组合对象或独立表达式可在目标绑定调用执行之际发起目标绑定350的建立。目标绑定调用是标识从独立表达式接收值的目标组合对象的应用编程接口调用。目标绑定350可具有标识连接到表达式的目标的目标标识符352。目标绑定350可提供由表达式计算的目标值354,作为将源读数324与对目标组合对象(诸如目标用户界面动画)的操作330进行组合的结果。

一个表达式的目标可以是第二个表达式的源,从而创建表达式链。图4以框图示出了表达式链400的一个实施例。前导独立表达式410可收集来自源组合对象420的源组合对象读数。前导独立表达式410可向过渡组合对象430输出表达式读数。后继独立表达式440可收集来自过渡组合对象430的过渡组合对象读数。后继独立表达式440可向目标组合对象450输出表达式读数。因此,过渡组合对象430可以是针对前导独立表达式410的目标组合对象450以及针对后继独立表达式440的源组合对象420。由于后继独立表达式440依赖于前导独立表达式410的输出,后继独立表达式440在前导独立表达式410之后被计算。独立表达式可在为后继独立表达式440和为前导独立表达式410之间交替。通过使得后继独立表达式440的最终目标组合对象450用作前导独立表达式410的最终源组合对象420,次代码线程可创建递归链。

图5以流程图示出了执行多线程用户界面的方法500的一个实施例。用户界面系统可从存储器读取用户界面代码集(框502)。用户界面系统可执行发起次代码线程或与次代码线程连接的针对用户界面的主代码线程(框504)。几乎与主代码线程同时,用户界面系统可执行针对用户界面的次代码线程(框506)。用户界面系统可使用主代码线程来操作用户界面的体系结构(框508)。用户界面系统可使用次代码线程来根据该体系结构渲染用户界面的呈现(框510)。

用户界面系统可使用更专门的代码集。图6以流程图示出了渲染多线程用户界面的方法600的一个实施例。用户界面系统可从存储器读取用户界面代码集(框602)。用户界面系统可执行发起渲染代码线程或与渲染代码线程连接的针对用户界面的应用代码线程(框604)。几乎与应用代码线程同时,用户界面系统可执行针对用户界面的渲染代码线程(框606)。用户界面系统可使用应用代码线程来操作用户界面的体系结构(框608)。用户界面系统可使用渲染代码线程来根据该体系结构渲染用户界面的呈现(框610)。

图7以流程图示出了执行主代码线程(诸如应用代码线程)的方法700的一个实施例。主代码线程可以与次代码线程连接(框702)。主代码线程可生成驻留在次代码线程中的源组合对象,诸如动态对象(框704)。主代码线程可计算次代码线程中的动画值以改变源组合对象的特性(框706)。主代码线程可生成驻留在次代码线程中的独立表达式以收集用于目标组合对象的输入集,诸如动态对象读数(框708)。主代码线程可执行次线程中的源组合对象和独立表达式之间的源绑定的源绑定调用(框710)。主代码线程可生成次代码线程中的目标组合对象(框712)。主代码线程可执行目标组合对象和独立表达式之间的目标绑定的目标绑定调用(框714)。

图8以流程图示出了执行次代码线程(诸如渲染代码线程)的方法800的一个实施例。次代码线程可基于动画值渲染源组合对象(框802)。次代码线程可收集来自源组合对象的源组合对象读数(框804)。如果前导独立表达式馈入独立表达式(所述独立表达式馈入目标组合对象)(框806),则次代码线程可在该独立表达式之前处理前导独立表达式(框808)。次代码线程可处理该独立表达式以通过收集目标组合对象的输入集来生成目标值(框810)。次代码线程可基于输入集渲染目标组合对象(框812)。

图9以流程图示出了处理源组合对象的方法900的一个实施例。源组合对象可建立与该独立表达式的源绑定(框902)。源组合对象可输入动画值以改变源组合对象的特性(框904)。源组合对象可基于动画值输出源组合对象读数(框906)。

图10以流程图示出了处理目标组合对象的方法1000的一个实施例。目标组合对象可建立与独立表达式的目标绑定(框1002)。目标组合对象可输入表达式值以改变目标组合对象的特性(框1004)。如果目标组合对象执行后继目标绑定调用或次代码线程在目标组合对象上执行目标值改变(框1006),则目标组合对象可在后继目标绑定调用和目标值改变的至少一个之际将与独立表达式的目标绑定分离(框1008)。目标组合对象可基于表达式值输出目标值(框1010)。

图11以流程图示出了处理独立表达式的方法1100的一个实施例。独立表达式可建立与源组合对象的源绑定(框1102)。独立表达式可建立与目标组合对象的目标绑定(框1104)。独立表达式可确定源绑定的采样模式(框1106)。独立表达式可通过采样模式在一频率集处收集驻留在次代码线程(诸如渲染代码线程)中的针对目标组合对象的输入集(框1108)。如果次线程代码已经在活动源绑定期间安排源组合对象(框1110),则独立表达式可用置换值替换源组合对象读数(框1112)。独立表达式可在输入集上执行操作(框1114)。独立表达式可输出表达式值(框1116)。

图12以流程图示出了执行次代码线程以渲染具有动态输入的目标用户界面动画的方法1200的一个实施例。次代码线程可建立独立表达式和动态对象之间的源绑定(框1202)。次代码线程可建立独立表达式和目标用户界面动画之间的目标绑定(框1204)。次代码线程可渲染动态对象(框1206)。次代码线程可使用独立表达式来收集目标用户界面动画的动态对象的动态对象读数(框1208)。如果次线程代码已经在活动源绑定期间安排动态对象(框1210),则独立表达式可用置换值替换动态对象读数(框1212)。次代码线程可处理独立表达式以通过收集目标用户界面动画的输入集来生成表达式值(框1214)。次代码线程可输出表达式值(框1216)。如果目标用户界面动画执行后继目标绑定调用或次代码线程在目标用户界面动画上执行目标值改变(框1218),则次代码线程可在后继目标绑定调用和目标值改变的至少一个之际将目标用户界面动画与独立表达式之间的目标绑定分离(框1220)。次代码线程可基于动态对象读数来渲染目标用户界面动画(框1222)。

尽管已经用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中的本主题不必受公开的这些具体特征或动作的限制。相反,上文所描述的具体特征和动作是作为实现权利要求的示例形式来公开的。

本发明的范围内的实施例还可包括用于携带或其上储存有计算机可执行指令或数据结构的计算机可读存储介质。这样的计算机可读存储介质可以是可由通用或专用计算机访问的任何可用介质。作为示例而非限制,这样的计算机可读存储介质可包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁性数据存储器、或可用于携带或存储计算机可执行指令或数据结构形式的所需程序代码装置的任何其他介质,如与诸如信号或载波的传播媒介相对。计算机可读存储介质明确地不指这样的传播媒介。上述的组合也应被包括在计算机可读存储介质的范围内。

各实施例也可以在其中任务由通过通信网络链接的(通过硬连线的链路、无线链路,或者通过其组合)本地以及远程处理设备执行的分布式计算环境中实现。

计算机可执行指令包括,例如,使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令还包括由计算机在独立或网络环境中执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、以及数据结构等等。计算机可执行指令,相关联的数据结构,以及程序模块表示用于执行此处所公开的方法的步骤的程序代码装置的示例。这样的可执行指令或相关联的数据结构的特定序列表示用于实现这样的步骤中所描述的功能的对应的动作的示例。

虽然上面的描述可能包含具体细节,但是,它们不应该解释为以任何方式限制权利要求书。所描述的实施例的其他配置是本发明的范围的一部分。例如,可以将本发明的原理应用于每一个单个用户,其中,每一个用户都可以分别地部署这样的系统。这会使每一个用户都能使用本发明的好处,即使大量的可能的应用程序中的任何一个不使用此处所描述的功能。电子设备的多个实例中的每一个实例都可以以各种可能的方式处理内容。各实现不一定都在所有最终用户所使用的一个系统中。因此,所附权利要求书以及它们的法定等效内容只能定义本发明的范围,而并非给定的任何具体示例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1