DisplayObject

flashlizi edited this page May 7, 2012 · 9 revisions

DisplayObject

Quark DisplayObject illustration

Quark Infrastructure

显示对象 (DisplayObject)

  • 显示对象是Quark显示对象列表结构的顶级对象。
  • Image 图片。一般包括 HTMLImageElementHTMLCanvasElementHTMLVideoElement。在Quark中图片会被封装成一个 Quark.Drawable 的对象。通过 setDrawable()getDrawable() 接口来设置和获取。
  • Data 数据。包括显示对象的 x、y、width、height、alpha、rotation、visible、scaleX、scaleY、regX、regY、eventEnabled、polyArea等属性以及用户自定义的各种数据。
  • 可以通过继承扩展不同的显示对象。

显示对象容器 (DisplayObjectContainer)

  • 显示对象容器就是一种可以容纳子对象的显示对象。显示对象和显示对象容器的嵌套就构成了Quark显示对象列表结构。这跟HTML的DOM树结构非常相似。
  • 舞台Stage是一种特殊的显示对象。他是显示对象结构的根root,总入口。
  • 显示对象容器通过 addChild()removeChild() 等方法来添加和删除子对象。
  • 显示对象容器里的子对象采用自动深度管理方法。一般新添加的对象会显示在之前添加的对象之上。可以通过 setChildIndex() 等方法来改变子对象在容器中的索引位置,即深度。
  • 显示对象容器提供 getObjectUnderPoint() 方法来获得某一点下的子对象。

显示对象生命周期 (Quark DisplayObject LifeCircle)

DisplayObject LifeCircle

  • 显示对象的生命周期开始于添加到显示对象列表 container.addChild(obj)
  • 显示对象的生命周期结束于移除显示对象列表 container.removeChild(obj)
  • 在通过 stage.step() 方法刷新舞台的显示对象列表时,会依次循环调用显示对象的 update()render() 方法来实现更新对象数据和渲染。

显示对象的事件处理机制 (Event Mechanism)

  • Quark提供一个简单的 EventManager 来做系统事件的监听和回调,通过 EventManager.registerStage() 方法注册相应的事件如mousedown、touchstart等到舞台,舞台会自动转发给触发事件的显示对象。
  • 可以通过 obj.addEventListener() 方法让显示对象监听和响应各种事件。

显示对象的碰撞检测 (Object Collision)

  • Quark目前只提供矩形碰撞(Rectangle Collision),暂不支持像素级别的碰撞检测(Pixel Collision)。
  • 显示对象提供 getBounds() 方法获得其外包围矩形区域。
  • 显示对象提供 hitTestPoint()hitTestObject() 等方法来做点或对象的碰撞检测。