H5数独游戏开发-游戏中的自定义复合控件

  什么是复合控件?就是将多个基本控件组合在一起,给用户提供更多交互功能的控件,例如:游戏中的设置对话框,可以用来更改游戏设置。那么,游戏中的自定义复合控件是如何实现的呢?我们先来看看本节课要实现的效果——数字选择框,一个由掩码图层和多个按钮控件组合而成的复合控件,运行效果如下:

  当用户点击数字面板时,将弹出数字选择面板。好了,我们来看看游戏代码更改了哪些地方。首先,修改了数字面板响应鼠标点击的回调函数的代码,修改后的代码如下:

  这个回调函数内主要是做以下几件事:1、清除事件标记,表示已事件(鼠标点击)处理;2、修改响应事件的索引层次序(数字选择面板所在层);3、修改游戏状态(显示数字选择面板)。由于修改了游戏状态值,我们再看看游戏状态值发生了哪些改变,代码如下:

  游戏状态4表示显示数字选择面板。注意,一旦修改了游戏状态值,那么绘制游戏场景的函数也需要修改,修改后的代码如下:

  由于显示数字选择面板时,游戏主面板也需要显示出来,所以游戏状态值4和游戏状态值2共用了显示游戏主面板的代码,然后判断游戏状态值是不是4,是的话再把数字选择面板显示出来。现在是时候来看看数字选择面板的实现代码了,首先,我们看看那个掩码层是如何实现的,代码如下:

  掩码层类gxsMaskLayer继承自gxsShape类,有两个成员函数initParameter()和draw(),initParameter()函数主要是对掩码层的位置及大小进行初始化,以上数字均为设计时使用的坐标,所以在运行时要进行缩放。掩码层在设计时其位置为(0,500),大小为400 100,游戏主面板尺寸为400 600(设计尺寸)。draw()函数代码如下:

  这个函数将掩码层下面的图像取出来,然后逐像素与蓝色进行aplha混和,其结果是背景和蓝色各占一半(透过蓝色可以看见背景图像)。下面我们看看数字选择面板类gxsNumForSelect的实现代码,代码如下:

  构造函数带参数n,表示控件的名称,用来初始化sName成员变量;pMask表示掩码层对象,注意那个gxsUI.call(this)语句,这条语句初始化aChildUI数组(子控件数组);initParameter()成员函数依据控件初始化参数数组中的值初始化数字选择面板,我们看看数字选择面板的初始化参数是什么,代码如下:

  以上变量的作用都不难理解,主要是child,这个数组用来保存子控件(均为按钮控件)在g_aControlPara数组中的索引,每一个子控件在g_aControlPara数组中的定义如下:

  每个按钮控件在g_aControlPara数组中均由三个对象构成,obj表示按钮控件本身;fcb表示点击按钮控件后将调用的回调函数;initPara为按钮控件的初始化参数。由于数字选择面板在g_aControlPara数组内使用了子控件索引数组,所以gxsUI类init()成员函数的代码需要修改,修改后的代码如下:

  之前的代码在初始化绘制控件使用的图片对象之后就返回了,现在要判断当前初始化的控件是否有子控件,如果有的话则依次将每一个子控件添加到aChildUI数组成员变量中。看到这里你肯定会说,扯蛋!你都还没有创建子控件如何添加?那么子控件到底是在什么地方创建的呢?下面我们来看看创建子控件的代码:

好了,代码给出来了,下面我来问问你:这些按钮控件会在什么时候创建呢?这个问题留给大家思考,下面,让我们继续讲数字选择面板的实现代码,draw()成员函数的代码如下:

首先绘制掩码层,然后按每行9个子控件依次排列子控件,接着依次绘制每一个子控件。我们看看子控件是如何排列整齐的,排列子控件的代码如下:

  由于有子控件,在处理事件时要考虑到子控件应优先对事件进行处理,所以gxsUI.handle()成员函数的代码需要修改,修改后的代码如下:

  在处理事件的时候需要判断当前控件是否有子控件,有的话让子控件优先响应事件。那个clear()成员函数是新增加的,代码如下:

  这个函数主要判断控件状态是否变更完毕,如是的话将控件状态复位。接着引成员函数调用控件的回调函数并返回事件已处理标记true。最后就是数字选择面板子控件的回调函数中调用的FillNum()函数的代码了,这个函数的作用是将相应数字填入数字面板,目前是一个空函数,下次将介绍它的实现。

  子控件的事件处理是整个游戏中的难点,很高兴你能坚持到这里,接下来的内容都比较简单了。最后,将今天的内容录了一个视频,文章未提到的地方可以参看视频。

H5数独游戏开发——游戏中的自定义复合控件

  未完待续,敬请关注!后续更精彩,谢谢大家!

本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系admin#jikehao.com删除。
(0)
极客号的头像极客号
上一篇 2022年 10月 8日
下一篇 2022年 10月 8日

相关推荐

  • 免费游戏软件(app免费游戏排行榜)

    有没有免费的游戏盒子 1、:鲸云漫游鲸云漫游软件中有很多的游戏,个人电脑秒变云电脑,随时随地就可以玩,同时还支持多人云游戏,让你在玩游戏的时候也不孤单了,兼顾大量的手机,不需要高配…

    2023年 9月 25日
  • 1819湖人战绩_湖人战绩

    湖人夺总冠军15次分别是哪几年 1、赛季:1971-7胜场:6负场:1季后赛战绩:总冠军。赛季:1979-80、胜场:60、负场:2季后赛战绩:总冠军。赛季:1981-8胜场:5负…

    2023年 7月 5日
  • 事假理由都怎么写大学生(事假理由)

    提起事假理由,大家都知道,有人问事假理由都怎么写大学生,你知道这是怎么回事?其实事假理由都怎么写大学生,下面就一起来看看事假理由,希望能够帮助到大家! 请一天事假的最好理由是什么 …

    2023年 4月 25日
  • 电竞好听的英文id男(电竞好听的英文id)

      之前在各种王者荣耀的论坛里,有很多玩家分享如何利用王者荣耀的英雄BUG或者地图BUG刷金币的方法。然而天美总会第一时间注意起来,马上修复。其实玩王者荣耀,一大困扰就是金币太难得…

    2023年 10月 28日
  • 遇见你真好的句子朋友(遇见你真好的句子)

      这大概是嫁给爱情的样子吧。   “你为什么喜欢我?”   因为遇见你,   我变成了更好的自己,   明白了生活的意义。   遇见你真好,愿陪你终老   世界上最动人的话不是I…

    2023年 10月 12日
  • 未来二十年改变世界的点是什么?

    过去的二十年改变世界的点是互联网,那么未来二十年改变世界的点又是什么呢? 毫无疑问就是新能源,很多人会说:“废话,这还用你说,地球人都知道。” 大家都知道全世界都在研发新能源,但是…

    2022年 10月 10日
  • 我国科学家证实人是鱼类进化来的

    我国科学家证实人是鱼类进化来的.从人到鱼演化过程需要五亿年.先后经历了最早的无颌类演化.变成有颌类肉鲭鱼之后.登上陆地变成两栖和哺乳动物.最终演化成人类这样一个漫长的过程。

    2022年 10月 11日
  • 重生小说排行榜完本经典之作(重生小说排行榜完本)

    十大重生香港小说排行榜 十大重生香港小说排行榜:《梦幻香江》、《醉枕香江》、《影城大亨》、《电影大亨》、《东方好莱坞》、《港娱1975》、《香港之梦》、《超级潇洒人生》、《港岛大亨…

    2023年 12月 20日
  • latex中文

    大家好,今天给各位分享latex中文的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧! latex怎么读 late…

    2023年 6月 2日
  • “滴滴元老”柳青:带病创下百亿身家,抗癌5年离异带三娃

    2014年,高盛高管柳青有一次很不好的打车体验,当时,柳青一次出行,却打不到出租车,因此,公共出行产生了浓厚的兴趣。 很快,柳青跟滴滴的领导层有了交集,并且在一番交谈后,萌生了加入…

    2022年 10月 1日

合作联系:1152QQ041010