Egret入门学习日记 --- 第三十篇(书中 9.21 ~ 9.23 节 内容)

第三十篇(书中 9.21 ~ 9.23 节 内容)

  开始 9.21 节 内容。

  

  

  

  

  

  

  

  

  

扫描二维码关注公众号,回复: 6983889 查看本文章

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  哇,非常的长,总结一下。

  需求:

    1、创建一个弹窗组件。

  重点:

    1、编写 MyAlert 类。

    2、编写 PopUnManager 类。

    3、在 createGameScene 函数实例化使用。

  操作:

    1、编写 MyAlert 类。

      第一步,运行书中代码看看是否有问题。

      

      好的,没问题,可以开始研究 MyAlert 类了:

        show方法的作用:

          1、设置 MyAlert 组件的基本属性。

          2、根据 buttons 参数,改变按钮呈现的样式。

          3、显示 MyAlert 组件弹窗。

        

        hide方法:关闭弹窗

        setButton方法作用:

          1、设置1个按钮和2个按钮时,呈现的样式。

          2、设置 MyAlert 组件的 显示文本 和 标题。

        

        init方法:设置两个按钮的事件监听。

        onClickHandler方法的作用:

          1、对外提供按钮点击时的自定义事件。

          2、隐藏 MyAlert 组件。

        

      MyAlert 绑定类分析完毕。

      然后看一下对应 MyAlert 绑定类的 EXML 文件。

      

    2、编写 PopUnManager 类。

      接着,分析 PopUnManager 类:

        init方法的作用:

          1、设置基本的层级,显示对象、移除对象、遮罩都依赖于他。

        

        addPopUp方法主要作用:

          1、设置遮罩。

          2、显示要显示的对象。

          3、显示对象是否水平垂直居中。

          4、下一帧时,让显示对象维持水平垂直居中。

        

        removePopUp方法,主要作用:

          1、移除 遮罩。

          2、移除 显示对象。

        

    3、在 createGameScene 函数实例化使用。

       

  至此,9.21节 内容结束。

  

  开始 9.22节 内容。

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  需求:

    1、掌握组件之间通信的方法。

  重点:

    1、基于事件通信。

    2、基于事件管理类通信。

    3、基于回调通信。

  操作:

    1、基于事件通信。

      首先先创建两个组件,A和B。

      

      这是运行时,我还没点击A组件的效果。

      

      点击A组件后,B组件的值就变了。

            

    2、基于事件管理类通信。

      其实相当于在A和B之间,加入一个中介类。

      来看看中介类的样子:

        

      这样的话逻辑就是,A通过中介发布事件。B通过中介接收事件。

      现在我把A改成C,B改成D。

      

      

      现在我点击C组件,看看D组件的变化。

      

      这种方式,也是可以让组件之间相互通信。

    3、基于回调通信。

      前两种的方式,都感觉不太靠谱,主要是由于事件名字的规则,太被动了。

      需要两者提前知道事件名,而且也没有很好的代码提示。

      因此,基于回调通信的方式,会相对较好。

      那么我重新创建两个基于 A和B 的组件 E和F。

      

      然后看看使用时的样子。

      

  至此,9.22节 内容结束。

  

  呼~洗澡去。

猜你喜欢

转载自www.cnblogs.com/dmc-nero/p/11321360.html