类介绍

继承自 EventDispatcher

DisplayObject is an abstract class that should not be constructed directly. Instead construct subclasses such as Container, Bitmap, and Shape. DisplayObject is the base class for all display classes in the EaselJS library. It defines the core properties and methods that are shared between all display objects, such as transformation properties (x, y, scaleX, scaleY, etc), caching, and mouse handlers.

方法

cache (x,y,width,height[,scale=1])

Defined in cache:749
把此显示对象写进一个新的隐藏的canvas,然后用于接下来的绘制。此显示对象可能有多个child,也可能有多个滤镜,stage每次update需要绘制这个对象的时候都会重新绘制所有child和滤镜,因此可以用这个缓存起来,下次直接把它放上画布速度就快了。缓存好的这个显示对象,可以自由地移动、旋转、渐消(faded)。然而,如果它的内容发生变化,你必须手动调用updateCache() 或者重新使用 cache()。你必须通过x, y, w, 和 h参数,指定缓存的区域,这里指定的矩形区域会被渲染和缓存,且使用的是这个对象的坐标系。

例如如果你定义了一个形状,而且在形状里0,0位置画一个半径25的圆形:

 var shape = new createjs.Shape();
 shape.graphics.beginFill("#ff0000").drawCircle(0, 0, 25);
 myShape.cache(-25, -25, 50, 50);
 

参数:

  • x Number
    需要缓存的区域的x值(此区域指的是此对象本身的区域,坐标系是此对象本身的)

  • y Number
    需要缓存的区域的y值(此区域指的是此对象本身的区域,坐标系是此对象本身的)

  • width Number
    需要缓存的区域宽度(此区域指的是此对象本身的区域)

  • height Number
    需要缓存的区域高度(此区域指的是此对象本身的区域).

  • [scale=1] Number optional
    缓存的scale会自动创建。例如使用myShape.cache(0,0,100,100,2)缓存一个矢量形状,然后得出的缓存canvas会是200x200 px。这个可以让你更保真地放大和旋转缓存元素。默认是1。

注意1:滤镜要在缓存之前指定。一些滤镜(例如 BlurFilter)和scale一起使用是不会产生效果的。(这一点是官方翻译过来的,应该是指注意3中提到的问题吧)
注意2:通常,最终的缓存canvas的面积是widthscale乘以heightscale,然而一些滤镜(例如 BlurFilter)会给原对象添加宽度(可以看到使用过BlurFilter的矩形,边缘已经不是一条线了,而是扩展出一些像素出去了的),所以缓存时的宽度注意加上这些扩展出来的。怎么获取BlurFilter扩展出的像素
注意3:注意:width和height两个参数,对于已经用scale改变过形状大小的对象来说,应该填它原来的宽度,而不是改变大小后的宽度,比如一个矩形原始宽度是100px,设置了scaleX=0.5,填这个值时,应该填100,而不是50!(这是我理解了之后加的,官方并没有这样说,而且似乎只有加了BlurFilter的对象才会这样,我现在在进行实际开发,不能做实验,晚些有空再做实验吧。)


黒之染
3.1k 声望48 粉丝

两年半个人练习生,喜欢ctrl+c/ctrl+v/delete