青瓷qici - H5小游戏 抽奖机 4 运行脚本编写

hello,小伙伴们,我们来继续编写相关的程序。

前几章我们已经基本把界面等问题搞定了,现在我们就来写脚本让整个流程统一起来。

看看我们现在有了什么?一个界面还有他的层次结构

青瓷界面绑定UI.js创建

 

化成关系图如下,我们调整一下, 因为背景应该上面抽出一层,作为公共背景,让这个背景来控制自己到底显示高亮还是暗黑

 

调整完毕后,我们来划分需要编写的逻辑,前面最高控制整个程序的是UIRoot我们为他创建一个脚本。下面每个脚本控制一个效果。

 

好的,我们来动手写程序。可以看到我们当前的目录结构如下,Script中啥也木有。为了少些点代码,我们在界面中创建JS脚本,会附带生成一些我们需要的UI关联参数。

 

创建完成,qici编辑器会自动为我们生成js后缀的js文件,以及为我们的文件创建ID文件,也就是 js.meta 关联界面就是通过这个meta文件,所以版本管理的时候记得加上。

 

为了查看方便,在资源目录下方有个拉条,可以调整缩放比例,为了看全名字,一般调成最小列表形式。

 

文件都建好了,添加版本管理。我们可以忽略Build文件夹,理论上Temp文件夹也可以忽略,不过以免有时候忘记保存,还是加上Temp比较好,在我们编辑的时候Temp会临时保存我们的工作场景。资源文件会生成两个文件,分别是bin , bin.meta 系统帮我们进行了预处理。

-----------------------------------------------------------------

青瓷脚本设置UI节点关联

创建脚本,设置本脚本需要管理哪些子元素

 

UIRoot的脚本设置。设置它名下管理5个Node节点元素。

 

Bg脚本设置,名下管理两个UINode节点

 

烟火节点的脚本,设置名下管理5个烟火节点。更好的方案是设置成节点数组,由外部设置数组长度和内容,而不必每个设置。

 

获奖节点的脚本,设置名下管理两个节点,分别是快速掉落奖励节点,和最终展示奖品节点

 

最后还有我们的拉杆节点,管理下属球节点和棍子节点。

 

写好了切回编辑器,在非运行模式下回加载修改的js,转转转,等一下。

在编辑器运行模式下要切回编辑模式,还要等一会,等后台自动加载修改,进入转转转界面。

 

 

青瓷UI元素绑定脚本

UIRoot节点,我们采取拖拽的方式,吧RootUI.js文件从项目资源窗口中,Script文件夹下,托转到节点上。点击UIRoot节点,在属性中就能看到已经绑定的脚本。

我们把我们脚本需要管理的几个Node节点拖拽关联到UIRoot的脚本之上,最终结果如下图。

 

第二步,绑定子元素对应的脚本,

我们对background节点点击,在属性最下面添加脚本,并如图一步步选择对应的脚本。

 

选择成功后对元素进行绑定

 

下面分别绑定拉杆,烟火和奖品,还有分享界面

 

 

青瓷如何在编辑器快速调试

既然已经开始写脚本了,那么调试肯定很频繁了。怎么比较快地调试呢?

在编辑器,不用改变UI的情况下,进入运行模式。修改代码之后,点菜单工程,刷新场景,

马上就能加载新的js脚本。编辑器会为我们的新代码加入时间后缀。如果要设断点就进入新的文件吧。

 

 

 

青瓷脚本调用前台资源、其他附属脚本、效果

首先给我们的背景管理脚本增加两个操作,显示和消失暗黑的背景。

这里用var self = this;是一个比较好的选择,方便到时候函数中各种回调、方法里面直接调用本self中的元素。

另外脚本中对界面绑定的node对象操作,需要self.gameObject获取。

 

第二步,我们给烟火书写调用脚本。

我们预先排好了烟火的位置不是为了让它一起烧的,所以在函数里头通过外部指定燃放多少个烟火,把我们指定烟火随机截取出来,加入延时进行燃放。

烟火是粒子系统的元素,本身就有借口reset/start/delay。因此代码如下设置。

 

为了快速调试,我们为这个元素增加一个onClick方法。在编辑窗口运行的情况下,点击刷新场景,加载我们刚才编写好的代码。

 

点击我们加载好刚才代码的节点,firework。在他的属性中激活点击事件的捕获。

 

来,见证奇迹的时刻。

 

青瓷Nodes数组元素传入绑定

前面我们烟火的绑定是一个一个对应的,事实上我们在内部还是作为数组处理,如果直接传入就是数组那不是更爽?

我们来动动手术。吧我们写了的
fireworks_0_Node: qc.Serializer.NODE,

转换成。

fireworksNode: qc.Serializer.NODES,//烟花对象数组

然后在界面上重新绑定一下。啊~世界清净了

 

青瓷TweenPosition实现滚动效果

前面我们已经把遮罩部分做了。忘了回去翻前面的帖子(╯‵□′)╯︵┻━┻

来来来,我们坐下来继续好好谈。

现在界面显示是酱紫的,其实上面覆盖了两个图像。

 

我们定义脚本中,先设定取值范围,因为我们的奖品设置关联的素材是雪碧图,所以我们可以直接通过切换frame名称得到对应的图。

我们现在吧frame名称写下来,以便后面从数组和对象里面获取。

 

唤醒的时候加载下落的脚本,注意下文中获取对象脚本的方式。

// Called when the script instance is being loaded.
RewardUI.prototype.awake = function() {
    var self = this;

    if (self.fastImageNode) {
        self.fastPosition = self.fastImageNode.getScript("qc.TweenPosition");
        self.fastFilterGroup = self.fastImageNode.getScript("qc.FilterGroup");
        self.fastBlurX = self.fastFilterGroup.filters[0];
        self.fastImageNode.visible = false;
    };

    if (self.lastImageNode) {
        self.lastPosition = self.lastImageNode.getScript("qc.TweenPosition");
        self.fastImageNode.frame = self.default;
        self.lastImageNode.visible = true;
    };
};

 

 

我们把运动的效果制作一下,外部传入回调函数,当执行完成后调用回调函数。

外部传入初始的模糊度和速度,我们内部自己衰减

内部是一个递归函数,按照外部的次数来递归。

 

最后我们把这两个效果统一对外进行封装

 

为了调试方便,我们添加一个点击事件,调用自己的show。快速调试

 

见证奇迹的时刻来了

 

青瓷实现拉杆效果,通过TweenPosition/TweenScale

下落的效果已经做过了,同样操作,先把节点对应的脚本加载到内存。

然后对他进行操作,并对外绑定回调函数,感知动作完成。

这里注意加上一个控制flag,以免在动作过程中被打断。只有完成了flag才有效

 

又来见证奇迹了

 

青瓷UI节点对子UI节点脚本的调用

写好了前面的逻辑,到最后关联就不是什么难事了,我们把UI关联了的节点的脚本获取一下

在加载中绑定动作效果的前后关系,在最后把还不应该显示的内容隐藏掉。

把棍子的接受外部点击的能力勾上。

 

烟花原本是置于抽奖奖品之下的,我们调整下显示顺序。

 

好的,现在。。。

又来看看这货。咦,我为什么说又。。

时间: 2024-09-27 09:40:36

青瓷qici - H5小游戏 抽奖机 4 运行脚本编写的相关文章

青瓷qici - H5小游戏 抽奖机 2 界面布局

背景图片 首先我们需要在当前场景下面创建UI的根节点,这个根节点决定了我们整个游戏的元素布局,以及适应多分辨率的缩放布局问题,所以我们其他的元素都要放在UIRoot下面. 考虑到我自己测试的时候在PC下面也想看得舒服,所以UIRoot的布局采用居中宽高比固定,然后在最下面Manual Type 设置为Expand 匹配宽或高,让显示区域在显示屏内填充满.   分辨率设置好了,我们现在来贴背景图.当前背景图为两张,一张是正常背景,用来显示玩的界面.一张背景图是较暗的,用来显示抽奖后烟火的效果. 在

青瓷qici - H5小游戏 抽奖机 3 效果设置

现在是万事俱备,只欠东风,好,我们一起动手,先来东风东. 烟花粒子效果 第一个来实现我们的烟花粒子效果,点击我们的粒子,按照下图方式配置. 注意此时我们已经加入了white.png作为粒子特效使用.     这里有几个地方要注意的.在游戏后期发布的时候,我在我那战斗力只有5点的手机上面跑粒子效果,妥妥滴卡死.在优化方面考虑,删掉了ColorTint选项,没有了颜色变化,自然连下面Color over LifeSpan 颜色控制线也不需要了.不过我们现在为了自己PC看着爽,还是先勾上,到时候消除也

青瓷qici - H5小游戏 抽奖机 1 素材

素材链接- 我们准备好所有素材 青瓷的素材引入,可以通过拖动的方式.我们打开windows的资源管理器,所有素材拖动到texture里面 框架会帮你进行预处理方便加载 我们在atlas文件夹里面新建目录 一律添加@atlas结尾,这样系统就可以自动帮我们剪裁成雪碧图了(Sprite图,精灵图). 全部拖到刚刚新建的文件夹中 选择重新打包成图集, 我们使用的时候就可以通过图片的帧名来切换了 后面添加新文件,只需要在文件夹中把对应的文件拖到对应的工程文件夹中即可. 我们后面还会添加一个放烟花用的图片

青瓷qici - H5小游戏 抽奖机 0 创建工程

安装运行平台需要nodejs,具体方法请参照官方说明文档. 运行后打开了一个空空的窗口. 首先我们进行工程设置,菜单>工程>设置 菜单里面设置我们游戏的名称,到时候会显示在游戏的title上面,设置版本 这里其中关键的地方我们要设计一个竖屏的游戏,分辨率是640*960,游戏帧率设置为30帧,让编辑时和实际手机运行效果同等. 应用,生效设计到工程中. 保存我们当前未命名的场景到工作目录中,以后我们运用的所有变化就在这个场景之中了. 注意尽量少使用中文,毕竟大家都懂得..

已被多次定制!!“模拟微信答题"的H5小游戏

今天推荐一款“模拟微信”答题的H5小游戏,这个也是涛舅舅这边客户定制的最多的一款游戏,曾经为现代汽车.万达.和<三妹>电视剧都作过定制! 以下是<三妹>定制的版本,推荐给大家! 扫一扫直接体验游戏 非vip会员:只接受定制,不出售源码,请联系涛舅舅报价 vip会员:可以购买源码,价格咨询涛舅舅

原生JS实现的h5小游戏-植物大战僵尸

代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结合面向对象的编程思想进行开发,在实现时使用了部分es6语法,对于es6语法不太熟悉的小伙伴可以先查阅相关资料了解一下. 如有需要,可根据自己的需求修改源码样式.源码配置属性代码,实现个性化定制. 以下为文件目录结构示意图,核心代码在js文件夹下的四个common.js.main.js.game.js

【H5小游戏开发教程】如何限制微信游戏只能在微信端打开?

在这行里接触的时间多了,就会发现很多有意思的东西. 比如,很多微信小游戏会限制只能在微信端打开,有木有? 有这样的, 也有这样的, 妈蛋,不能用PC访问,这游戏就没法扒呀..... 其实涛舅舅告诉你,这两种都可以扒 而且是用PC! 但是今天,我不教你扒皮 我要教你的是,怎么让你的微信游戏也能限制PC打不开 很想学吧  准备开始! 1.第一种不提了,因为人家是设置了微信授权登录,从微信那里就拦截住了,只能用微信访问,你可能弄不了这么高级的微信授权这块,如果你真能弄,这一讲你也不用听了,因为你已经能

用canvas写一个h5小游戏

这篇文章我们来讲一讲用canvas画一个躲水果的小游戏.就是通过手指控制一个人物移动来躲避水果,若发生碰撞,则游戏结束. 我们定义一个game_control对象来处理初始化,事件绑定,游戏开始,游戏结果判定,游戏结束等判定. 在游戏中,我们需要一个人物以及三种水果的图片,我们做成了雪碧图. 接下来直接上代码吧~ 首先我们定义一个ship对象,3个水果.一个人物都是基于这个对象的. function ship(options){ if (options) { var width=options.

手把手教学h5小游戏 - 贪吃蛇

简单的小游戏制作,代码量只有两三百行.游戏可自行扩展延申. 源码已发布至github,喜欢的点个小星星,源码入口:game-snake 游戏已发布,游戏入口:http://snake.game.yanjd.top 第一步 - 制作想法 游戏如何实现是首要想的,这里我的想法如下: 利用canvas进行绘制地图(格子装). 利用canvas绘制蛇,就是占用地图格子.让蛇移动,即:更新蛇坐标,重新绘制. 创建四个方向按钮,控制蛇接下来的方向. 随机在地图上绘制出果子,蛇移动时"吃"到果子,增