第三十篇(书中 9.21 ~ 9.23 节 内容)
开始 9.21 节 内容。
哇,非常的长,总结一下。
需求:
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节 内容结束。
呼~洗澡去。