1、Prefab制作

->制作教程:https://docs.cocos.com/creator/manual/zh/asset-workflow/prefab.html

2、编写一个预制板脚本绑定

/*通用提示框
*/cc.Class({extends: cc.Component,properties: {Text: { default: null, type: cc.Label },showTimes: 1, //隐藏时间jumpHeight: 100, //跳跃高度_isShow:false,},// LIFE-CYCLE CALLBACKS:setLabelString: function( str ){//這邊直接將我們的Label字串設定為 No.#//this.Text.string = ( str );//cc.find("background/textCount").getComponent(cc.Label).string = str;this.node.getChildByName("Text").getComponent(cc.Label).string = str;},//按钮点击回调onConfirBtn:function(callback){console.log("发布按钮点击回调事件");this.node.getChildByName("btnconfir").on('click',function(event){console.log("点击到按钮");callback();},this);},onLoad:function () {cc.log("showTips.onLoad")window.showtips = this;// 初始化计时器this.timer = 0;this.node.active = true;this.node.getChildByName("layout").on('touchend',function(event){console.log("点击到layout");console.log("销毁提示框");this.finish();},this);this.node.getChildByName("mask").on('touchend',function(event){console.log("点击到mask");},this);//this.node.getChildByName("btnconfir").on('click',function(event){//    console.log("点击到按钮");//},this);},setJumpAction: function () {this.timer = 0;// 跳跃var jumpDown = cc.moveBy(this.showTimes, cc.v2(0, this.jumpHeight)).easing(cc.easeCubicActionIn());var callback = cc.callFunc(this.finish, this);return cc.repeat(cc.sequence(jumpDown,callback),1);},finish:function(){this._isShow = false;if(this.node){this.node.active = this._isShow;   }this.node.stopAllActions();this.node.destroy();},start:function () {cc.log("showTips.start")},run:function (str) {this._isShow = true;if(this.node){this.node.active = this._isShow;   }this.setLabelString(str)this.jumpAction = this.setJumpAction();this.node.runAction(this.jumpAction);},update:function (dt) {//var opacityRatio = 1 - this.timer/this.showTimes;//var minOpacity = 50;//this.node.opacity = minOpacity + Math.floor(opacityRatio * (255 - minOpacity));//if (this.timer > this.showTimes) {//    this.finish();//    return;//}//this.timer += dt;},
});

3、只需要将上面脚本绑定到预制资源,再加载就能使用

4、使用

    //显示升级界面--预制体showTip:function(str){//我們先動態取得Canvasconsole.log("加载预制板");var CanvasNode = cc.find('Canvas');if( !CanvasNode ) { cc.log( 'find Canvas error' ); return; } var onResourceLoaded = function(errorMessage, loadedResource ){if( errorMessage ) { cc.log( 'Prefab error:' + errorMessage ); return; }if( !( loadedResource instanceof cc.Prefab ) ) { cc.log( 'Prefab error' ); return; } var newMyPrefab = cc.instantiate( loadedResource );CanvasNode.addChild(newMyPrefab,100);newMyPrefab.setPosition( 0, 0 );var newMyPrefabScript = newMyPrefab.getComponent('prefabBackground');newMyPrefabScript.setLabelString(str);newMyPrefabScript.onConfirBtn(function(){console.log("发送升级事件");});};cc.loader.loadRes('background', onResourceLoaded );},

5、附加问题

5.1、想要实现一个效果,就是点击这个有背景的区域之外的地方,这个层面消失。

在做的过程中,因为脚本直接挂载在这个节点上

在onload中直接使用

        this.node.on('touchend',function(event){console.log("点击到layout");console.log("销毁提示框");this.finish();},this);

这样会出现一种情况,就是不管点击在那个地方,这个节点都直接消失了。---不理想。

于是使用了一种老方法,添加遮罩层,然后对遮罩层监听点击事件

        this.node.getChildByName("layout").on('touchend',function(event){console.log("点击到layout");console.log("销毁提示框");this.finish();},this);this.node.getChildByName("mask").on('touchend',function(event){console.log("点击到mask");},this);

好了,这样就可以达到点击提示框外就可以销毁这个节点的效果了。

5.2、这个预制板中有一个标签(显示文字)、一个按钮(做响应),现在这个标签已经可以从外界调用传入参数实现不同的显示,然后我就想这个按钮是不是也可以这样,于是加了函数

//预制板脚本中   //按钮点击回调onConfirBtn:function(callback){console.log("发布按钮点击回调事件");this.node.getChildByName("btnconfir").on('click',function(event){console.log("点击到按钮");callback();},this);},外部调用//显示升级界面--预制体showTip:function(str){//我們先動態取得Canvasconsole.log("加载预制板");var CanvasNode = cc.find('Canvas');if( !CanvasNode ) { cc.log( 'find Canvas error' ); return; } var onResourceLoaded = function(errorMessage, loadedResource ){if( errorMessage ) { cc.log( 'Prefab error:' + errorMessage ); return; }if( !( loadedResource instanceof cc.Prefab ) ) { cc.log( 'Prefab error' ); return; } var newMyPrefab = cc.instantiate( loadedResource );CanvasNode.addChild(newMyPrefab,100);newMyPrefab.setPosition( 0, 0 );var newMyPrefabScript = newMyPrefab.getComponent('prefabBackground');newMyPrefabScript.setLabelString(str);newMyPrefabScript.onConfirBtn(function(){console.log("发送升级事件");});};cc.loader.loadRes('background', onResourceLoaded );},

这里没有设置按钮数据,有兴趣的朋友可以拓展一下。

调用结果

注意:在这里,所有的都要注意名字的大小写,在使用this.node.getChildByName("btnconfir"),老是提示找不到这个按钮。。。

在这个类中还有函数update ,可以拓展一下定时功能。

好东西、大家分享!

cocosCreator JS 开发 之 预制资源使用Prefab相关推荐

  1. 预制资源(Prefab)

    预制资源 · Cocos Creator 字体资源 · Cocos Creator 字体资源 使用 Cocos Creator 制作的游戏中可以使用三类字体资源:系统字体,动态字体和位图字体. 其中系 ...

  2. 游戏开发的HelloWorld,快速入门,新手上路,使用CocosCreator+JS,flyBird(飞翔小鸟)

    游戏开发的HelloWorld,快速入门,新手上路,使用CocosCreator+JS,flyBird(飞翔小鸟) 介绍 开发环境 游戏原理 文件结构 详细操作 全部代码 介绍 拓展什么的都没有,真正 ...

  3. 使用CocosCreator+JS 完成Flappybrid(像素鸟)小游戏

    使用CocosCreator+JS 完成Flappybrid(像素鸟)小游戏 前言 这是我在刚开始学Cocos做游戏时做的第一个小游戏.当时做了两个版本数学版和碰撞组件版. 环境 开发工具: Coco ...

  4. JS开发HTML5游戏《神奇的六边形》(四)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  5. JS开发HTML5游戏《神奇的六边形》(七)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击这里可进入游戏体验) 因内容 ...

  6. 83998 连接服务器出错_新生福利 | 使用 Node.Js 开发服务器

    点击蓝字关注,创智助你长姿势 Node.js 是一个 Javascript 运行环境 (runtime),发布于 2009 年 5 月,由 Ryan Dahl 开发.实际上它是对 Google V8 ...

  7. React.js开发生态系统概览 [译-转]

    React.js 开发生态系统概览 [译] JavaScript领域发展速度很快,甚至有人认为这已经引起了负效应.一个前端库从早期开发的小玩具,到流行,再到过时,可能也就几个月时间.判断一个工具能否在 ...

  8. 300+Jquery, CSS, MooTools 和 JS的导航菜单资源

    如果你是网站前端开发人员,那么对你来说,也许做一个漂亮导航菜单会很得心应手.本文要为大家总结各种导航菜单的资源,以便让大家的网站前端开发的工作更方便更快速,只要选择现成的例子就可以应用于自己的网站了. ...

  9. 2021年Node.js开发人员学习路线图

    Node.js 自发布以来,已成为业界重要破局者之一.Uber.Medium.PayPal 和沃尔玛等大型企业,纷纷将技术栈转向 Node.js.Node.js 支持开发功能强大的应用,例如实时追踪 ...

最新文章

  1. Ruby DSL介绍及其在测试数据构造中的使用(1)
  2. CentOS 7无线网卡驱动解决方法
  3. 地图瓦片相关学习总结
  4. 区块链,一个糟糕的数据库
  5. ABAP的语法高亮是如何在浏览器里显示的
  6. 数据库名、实例名和ORACLE_SID的区别
  7. 样条曲面_用SolidWorks曲面制作一个:台灯底座造型
  8. saltstack 远程执行之返回写入到mysql
  9. 快来看看Ubuntu 17.04官方吉祥物长什么样子!
  10. 软件测试员如何进行产品测试?
  11. 403高校毕业设计选题
  12. 蔡康永般“好好说话”?百度发起猛攻 推249元小度音箱
  13. php 判断字数,php统计字数
  14. 聊聊互联网广告前世今生,你想不想要流量?反正我想!
  15. python 修改图片尺寸_Python实现更改图片尺寸大小的方法(基于Pillow包)
  16. linux可视化界面黑屏,Fedora 14 不能进入图形界面 显示黑屏的解决办法
  17. win7怎么装python_如何在win7上面安装python的包
  18. 威世 | 新款 LLC 谐振变压器/电感器,优化 PCB 空间布局
  19. frame/frameset/iframe的区别
  20. 新态势感知系列(1):从态势感知到全方位态势感知

热门文章

  1. pandas清洗Kobe数据
  2. Vue push() pop() shift().....
  3. 斯坦福命名实体识别(Stanford Named Entity Recognizer)
  4. uni-app微信小程序接入皮卡智能api进行抠图操作
  5. 古希腊神话故事:洪水
  6. 2014年末,和小小在一起
  7. 在Windows10下的MacOS主题的实现
  8. 搭win建中转服务器,【图片】windows搭建服务器教程【异星工厂吧】_百度贴吧
  9. nw(node-webkit)封装成exe文件时exe文件运行错误问题
  10. springboot报No mapping for GET解决方法