发明内容
针对现有技术中存在的缺陷,本发明的主要目的在于提供一种显示对象的层级管理方法,本发明的另一目的在于提供一种显示对象的层级管理系统,层级对象作为显示对象的容器,需要用到层级对象的时候才进行创建,因此可以降低内存消耗,高效地利用硬件资源,提高开发效率。
本发明提供一种显示对象的层级管理方法,所述方法包括以下步骤:
接收用于标识层级对象在舞台上显示顺序的优先级标识,当所述优先级标识所对应的层级对象存在时,返回所述优先级标识所对应的层级对象,当所述优先级标识所对应的层级对象不存在时,根据所述优先级标识创建新的层级对象,其中,所述层级对象包括所述优先级标识和指定的显示对象,以使所述层级对象作为显示对象的容器,且所有层级对象均显示在舞台上。
在上述技术方案的基础上,在接收优先级标识之前,所述方法还包括:将所有所述层级对象存储在预先创建的列表中,创建层级管理类,并在所述层级管理类中建立Sprite类的对象作为所述层级对象的父对象,所述父对象显示在舞台上。
在上述技术方案的基础上,接收优先级标识,返回所述优先级标识所对应的层级对象包括:
接收优先级标识;
根据所述优先级标识,从所述列表中查找所述优先级标识所对应的层级对象;
将找到的层级对象添加到所述父对象上。
在上述技术方案的基础上,根据所述优先级标识创建新的层级对象包括:
根据所述优先级标识,创建Sprite类的对象作为新的层级对象;
将新的层级对象加入所述列表中,并对所述列表中所有的层级对象进行重新排序;
将新的层级对象添加到所述父对象上。
在上述技术方案的基础上,根据所述优先级标识,创建Sprite类的对象作为新的层级对象包括:根据预先创建的层级实现类,建立所述层级实现类的对象作为新的层级对象,所述层级实现类用于根据预定的接口创建Sprite类的对象作为层级对象,所述接口包括在所述层级对象中设置优先级标识,以及获取所设置的优先级标识。
在上述技术方案的基础上,将指定的显示对象加入新创建的层级对象中。
在上述技术方案的基础上,所述接口还包括对所述层级对象中的所有显示对象进行排序。
在上述技术方案的基础上,所述方法还包括:根据所述优先级标识对所述父对象中的所有层级对象进行排序,将所有层级对象按照排序结果显示在舞台上。
本发明还提供一种显示对象的层级管理系统,所述系统用于接收用于标识层级对象在舞台上显示顺序的优先级标识,当所述优先级标识所对应的层级对象存在时,返回所述优先级标识所对应的层级对象,当所述优先级标识所对应的层级对象不存在时,根据所述优先级标识创建新的层级对象,其中,所述层级对象包括所述优先级标识和指定的显示对象,以使所述层级对象作为显示对象的容器,且所有层级对象均显示在舞台上。
在上述技术方案的基础上,所述系统包括:
存储模块,其用于将所有所述层级对象存储在预先创建的列表中;
构造模块,其用于创建层级管理类,并在所述层级管理类中建立Sprite类的对象作为所述层级对象的父对象,所述父对象显示在舞台上;
查找模块,其用于接收优先级标识,根据所述优先级标识,从所述列表中查找所述优先级标识所对应的层级对象,将找到的层级对象添加到所述父对象上;
创建模块,其用于当与所述优先级标识相对应的层级对象不存在时,根据所述优先级标识,创建新的层级对象,将新的层级对象加入所述列表中,并对所述列表中所有的层级对象进行重新排序,将新的层级对象添加到所述父对象上。
与现有技术相比,本发明的优点如下:
(1)层级对象作为显示对象的容器,需要用到层级对象的时候才进行创建,因此可以降低内存消耗,高效地利用硬件资源,提高开发效率。
(2)创建的层级对象均具有用于标识在舞台上的显示顺序的优先级标识,可以通过改变优先级标识对层级对象进行后续调整,降低开发复杂性,进一步提高开发效率。
(3)预先创建的层级实现类根据预定的接口创建Sprite类的对象作为层级对象,能够减小编程耦合度,方便项目在后期的扩展和维护。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
本发明的思想在于:在使用ActionScript构建的应用程序中,DisplayObjectContainer为显示对象容器,是一类特殊的显示对象。作为显示对象,DisplayObjectContainer本身也需要通过addChild()方法添加到显示列表后才能显示,其内部可以包含其它的显示对象。DisplayObjectContainer包含Stage、Loader、Sprite和MovieClip类。层级对象是显示对象,层级对象也作为显示对象的容器,显示对象作为子对象添加到层级对象中,从而实现对显示对象的层级管理。层级对象均具有用于标识在舞台(Stage)上的显示顺序的优先级标识,层级管理类根据优先级标识实现对层级对象的管理,具体包括:需要用到层级对象的时候,根据优先级标识查找对应的层级对象,如果对应的层级对象不存在,通过层级实现类进行创建,从而提高开发效率。
参见图1所示,本发明实施例提供一种显示对象的层级管理方法,包括以下步骤:
S1.将所有层级对象存储在预先创建的列表中,创建层级管理类,并在层级管理类中建立Sprite类的对象作为层级对象的父对象,父对象显示在舞台上。
其中,层级对象包括优先级标识和指定的显示对象,以使层级对象作为显示对象的容器,所有层级对象均显示在舞台上,优先级标识用于标识层级对象在舞台上的显示顺序。创建的层级对象均具有用于标识在舞台上的显示顺序的优先级标识,可以通过改变优先级标识对层级对象进行后续调整,降低开发复杂性,进一步提高开发效率。
具体来说,创建LayerManager层级管理类,用于对层级对象的操作和管理,所有的层级对象的信息也保存在层级管理类中,在层级管理类中建立Sprite类的对象作为层级对象的父对象。在层级管理类的构造方法中,因为层级对象是添加到舞台上的,用一个全局变量来保存由外部传进来的层级对象,并作为层级对象的父对象,实现代码可如下:
S2.接收优先级标识,判断优先级标识所对应的层级对象是否存在,若是,进入S3;若否,进入S4。
S3.返回优先级标识所对应的层级对象。
步骤S3具体包括:
S3.1接收优先级标识。
S3.2根据优先级标识,从列表中查找优先级标识所对应的层级对象。
S3.3将找到的层级对象添加到父对象上。
具体来说,创建getLayer(priority:uint),这个方法是根据传入的优先级标识,在列表layerMap中找对应的层级对象,如果有就返回对应的层级对象Layer,如果没有就返回null,实现代码可如下:
其中,layerMap为预先创建的列表,用于存储所有层级对象。
S4.根据优先级标识创建新的层级对象。
步骤S4具体包括:
S4.1根据优先级标识,创建Sprite类的对象作为新的层级对象。具体来说,根据预先创建的层级实现类,建立层级实现类的对象作为新的层级对象,层级实现类用于根据预定的接口创建Sprite类的对象作为层级对象,接口包括在层级对象中设置优先级标识,以及获取所设置的优先级标识。将指定的显示对象加入新创建的层级对象中。
具体来说,创建ILayer接口,用于层级对象的接口类,这个类中定义如下几个方法:
set priority(value:uint):设置一个优先级标识,这个优先级标识也作为层级对象的唯一标示。
get priority():uint:获取层级对象的优先级标识,即获取层级对象的唯一标示。
onSort():void:对该层级对象中的显示对象进行排序。
接口的实现代码可如下:
具体来说,创建Layer类,即实现了ILayer接口的层级实现类,并且该层级实现类继承了sprite类作为一个显示对象的容器类,能够添加到舞台上。因为层级对象只是作为一个容器来使用,它并不需要对事件的监听,为了避免不必要的开销,在Layer类的构造方法中禁用鼠标事件,接收并保存该层级对象的优先级标识或唯一标示参数。因为每个层级的排序方式可能都是不一样的,所以在这个类中不实现排序的方法onSort,具体的实现方式由继承这个类的子类去实现,层级实现类的实现代码可如下:
预先创建的层级实现类根据预定的接口创建Sprite类的对象作为层级对象,能够减小编程耦合度,方便项目在后期的扩展和维护。Layer类作为一个通用的基类,如果层级对象没有特殊的要求,直接通过这个基类创建层级对象就够用了,能够避免代码的冗余。
S4.2将新的层级对象加入列表中,并对列表中所有的层级对象进行重新排序。
S4.3将新的层级对象添加到父对象上。
具体来说,创建addLayer(layer:Layer)方法,外部传进来一个layer层级对象,然后通过层级管理类来进行管理,在这个方法中,先检查这个layer层级对象的优先级标识priority是否已经存在,如果不存在,就保存起来,实现代码可如下:
总的来说,创建createLayer(priority:uint):Layer方法,传入一个层级对象的优先级标识,然后返回一个层级对象Layer。首先调用步骤S3中的getLayer方法是否能获取一个layer层级对象,如果能获取就表示列表layerMap中找到对应的层级对象,直接返回找到的层级对象。如果没有找到对应的层级对象,那么就新建一个layer对象,然后调用步骤S4中的addLayer方法通过层级管理类对创建的层级对象进行管理,然后将创建好的层级对象返回给外部使用。
与上述S2至S4内容对应的实现代码可如下:
使用该方法能快速地获得一个层级对象,首先在列表中找现有的层级对象,如果层级对象存在就直接返回,如果层级对象不存在就创建一个层级对象,然后将创建的层级对象与层级管理类关联上。
层级对象作为显示对象的容器,需要用到层级对象的时候才进行创建,因此可以降低内存消耗,高效地利用硬件资源,提高开发效率。
步骤S4还可以包括:
S4.4根据优先级标识对父对象中的所有层级对象进行排序,将所有层级对象按照排序结果显示在舞台上。
具体来说,创建onSort方法,用于对层级管理类中的层级对象进行排序操作,实现方式是根据layer层级对象的优先级标识priority属性来进行排序,优先级标识priority这个属性的值越大,那么表示层级越高,显示就越前,通过层级管理类添加的层级对象都会进行一个排序的操作,以保证层级对象的正确显示,实现代码可如下:
参见图2所示,本发明实施例还提供一种显示对象的层级管理系统,本系统用于接收用于标识层级对象在舞台上显示顺序的优先级标识,当优先级标识所对应的层级对象存在时,返回优先级标识所对应的层级对象,当优先级标识所对应的层级对象不存在时,根据优先级标识创建新的层级对象,其中,层级对象包括优先级标识和指定的显示对象,以使层级对象作为显示对象的容器,且所有层级对象均显示在舞台上。
本系统包括存储模块、构造模块、查找模块和创建模块。
存储模块用于将所有层级对象存储在预先创建的列表中。
构造模块用于创建层级管理类,并在层级管理类中建立Sprite类的对象作为层级对象的父对象,父对象显示在舞台上。
查找模块用于接收优先级标识,根据优先级标识,从列表中查找与优先级标识相对应的层级对象,将找到的层级对象添加到父对象上。
创建模块用于当优先级标识所对应的层级对象不存在时,根据优先级标识,创建新的层级对象,将新的层级对象加入列表中,并对列表中所有的层级对象进行重新排序,将新的层级对象添加到父对象上。
层级管理类根据优先级标识实现对层级对象的管理,需要用到层级对象的时候,根据优先级标识查找对应的层级对象,如果对应的层级对象不存在,通过层级实现类进行创建,从而提高开发效率。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。