1. label的mouseChildren属性为true,但label本身是不需要监听textfield的任何事件的,

  个人猜测是为了给TextInput, TextArea用的,因为后两者需要监听textfield的事件。

  所以,我觉得最好的处理方式还是lable的mouseChildren属性设置为false,在TextInput中再设置mouseChildren为true

2.DragMangager中找出drop对象的方式比较巧妙,通过value.hasEventListener(DragEvent.DRAG_DROP)带判断是否是合适的对象!

  这个很值得借鉴。当项目中还有一个需求时,当拖动某个display时,还需要目标target闪烁以告知用户往哪儿脱。

  目前的DragManager似乎还无法很好的解决这个需求,如果需要处理的话,需要写在

    _dragInitiator.dispatchEvent(new DragEvent(DragEvent.DRAG_START, dragInitiator, data));

  中,但这又会才生耦合。这个问题还需要好好考虑。

  还有一点是,drag是在display是在mouseDown事件中触发的,如果盖在mouseMove中是不是更好?

  即是,在mouseDown事件中注册stage的mouseMove的监听,如果有移动,则startDrag,当然了,这里还需要要给标识,标识是否已经start。不知道这样是否更好!

  就目前的实现来说,每次mouseDown都触发DragEvent.DRAG_START事件,我觉得有些浪费。

  当然,这个触发也仅仅针对是可拖动的对象,如果不是可拖动的对象,mouseDown就不会调用DragManager的doDrag方法,理论上也不会浪费很多。

3.TipManager是监听stage上的tip事件来触发的,这也是一个比较好的思路!

4.RenderManager中在invalidate在一个标识,而不是每次调用都addEventListener来判断是不是会更高效?

5.对于子对象的event似乎处理的不够好。以TextInput为例,捕获到textfield的Input事件时,又重新抛出这个事件。

  如果用户在使用的过程中,监听了TextInput的事件,那么事件响应代码会被执行两次,一个是textfield抛出的,还有一次是TextInput抛出的。

  所以个人绝对在TextInput内部,捕获到textfield事件后,应该调用事件的stopImmediatePropagation方法。然后再抛出。

6.查看2.3和2.5版本的list,list的item只能是runtime和box这两种,如果list的内容是单单某个组件就会报错,一定要把组件转换成box。

  2.3版本的list解析在view中有特殊处理,

    if (comp is List && node.@name == "render")  {
      if (node.name() == "Box")  {

  2.5版本中,list内容又有处理,

    cell = _itemRender is XML ? View.createComp(_itemRender) as Box : new _itemRender();

    var cell:Box = getChildByName("item" + i) as Box;

  不知道为什么非要这样设计。

7.View的XML解析和runtime概念真的超赞!!!

  不知道是不是借鉴了bit101的MinimalComps的MinimalConfigurator,而mornui中的var和minimalComps中的idMap也有异曲同工之妙。

  但minimalComps中的prop赋值时,有一个specialProps,这里面的属性赋值时机是在其他prop之后,这个没懂。mornui中也不存在有优先级的prop。

  MinimalComps的源码很早前就看到,印象最深的是它的延迟渲染的理念,却没想到MinimalConfigurator也是很值得参考的东东。惭愧。

8.配合MornBuilder使用,真的超级方便!再赞一个!

2014.04.09补充

9.自定义morn组件时,会编写该组件的xml的信息,每个属性有一个默认值。当编辑器发布页面的时候,如果编辑器中属性值和默认值相同,则发布出来的页面不带该属性,否则会带有该属性修改后的值。

这样也减少了一些不必要的运算!做到这点很细心!

2014.04.11

关于drag比较好的一种实现:

监听targer的mouse_over事件,如果e.buttondown为true,则调用dragManger的dodrag方法

最新文章

  1. Web墨卡托投影(转)
  2. MFC与C#连接MYSQL乱码问题
  3. Git本地仓库
  4. meanshift
  5. 导入maven工程遇见的问题【问题】
  6. The 1st day with Python
  7. Maven异常: No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK解决(能力工场小马哥)
  8. AJAX制作JSON格式的实时更新数据的方法
  9. mysql_connect v/s mysql_pconnect
  10. SQL 2008升级SQL 2008 R2完全教程或者10.00.4000升级10.50.1600
  11. The JSR-133 Cookbook for Compiler Writers(an unofficial guide to implementing the new JMM)
  12. Maven之(五)Maven仓库
  13. Day03——类、值和对象
  14. html中如何修改选中 用input做的搜索框 的边框颜色
  15. 1002: [FJOI2007]轮状病毒
  16. 基于OpenCV单目相机的快速标定--源码、工程、实现过程
  17. mac chrome 强制刷新浏览器缓存
  18. 常见MQTT服务器搭建与试用
  19. mybatisplus打印sql语句
  20. Elasticsearch学习之有用博客

热门文章

  1. POJ 3384 Feng Shui(半平面交向内推进求最远点对)
  2. zoj 2290 Game 博弈论
  3. 初始JSON
  4. android-non-ui-to-ui-thread-communications-part-4-of-5
  5. Android 图片异步加载的体会,SoftReference已经不再适用
  6. -ffunction-sections -Wl,--gc-sections
  7. 物联网操作系统Hello China V1.76(PC串口版)版本发布
  8. XP下,文件夹添加右键命令行
  9. VS2010/MFC编程入门之五(MFC消息映射机制概述)
  10. Jenkins Master/Slave架构