LayaBox开发实战之实现一个简单的模板类

1.首先UI设计:记得导出

2.然后查看layaUI.max.all.js中是否生成对应UI的JS代码:

var FeedBackUI=(function(_super){
        function FeedBackUI(){

            this.btn_close=null;
            this.FeedBackText=null;
            this.button_submit=null;
            this.button_cancel=null;

            FeedBackUI.__super.call(this);
        }

        CLASS$(FeedBackUI,‘ui.Main.FeedBackUI‘,_super);
        var __proto__=FeedBackUI.prototype;
        __proto__.createChildren=function(){

            laya.ui.Component.prototype.createChildren.call(this);
            this.createView(FeedBackUI.uiView);

        }

        FeedBackUI.uiView={"type":"View","props":{"width":720,"height":1280},"child":[{"type":"Image","props":{"y":10,"x":10,"top":0,"skin":"ui/nineGridGrey/image_heidi2.jpg","right":0,"left":0,"bottom":0,"alpha":0.5}},{"type":"Box","props":{"y":10,"x":10,"width":720,"mouseThrough":true,"height":1280,"centerY":0,"centerX":0},"child":[{"type":"Box","props":{"y":179,"width":626,"height":784,"centerX":0},"child":[{"type":"Image","props":{"y":-9,"x":-1,"width":627,"skin":"ui/nineGrid/image_2.png","sizeGrid":"68,77,84,69","height":793}},{"type":"Image","props":{"y":-58,"x":148,"width":328,"skin":"ui/nineGrid/image_title_01.png","sizeGrid":"0,57,0,55","height":126},"child":[{"type":"Label","props":{"y":62,"x":168,"width":141,"text":"反馈","pivotY":33,"pivotX":67,"height":59,"fontSize":55,"color":"#ef9307","bold":true}}]},{"type":"Button","props":{"y":50,"x":576,"var":"btn_close","stateNum":1,"skin":"ui/common/button_close.png","anchorY":0.5,"anchorX":0.5}},{"type":"Panel","props":{"y":145,"x":43,"width":537,"vScrollBarSkin":"ui/common/vscroll.png","height":535},"child":[{"type":"TextArea","props":{"y":0,"x":0,"width":509,"var":"FeedBackText","text":"请为我们提出合理化的建议....","height":446,"fontSize":20,"font":"SimHei","color":"#605b5b"}}]}]},{"type":"Button","props":{"y":857,"x":213,"width":234,"var":"button_submit","stateNum":1,"skin":"ui/login/button_login.png","labelSize":40,"labelFont":"SimHei","labelColors":"#ffffff","label":"提 交","height":71,"anchorY":0.5,"anchorX":0.5}},{"type":"Button","props":{"y":859,"x":474,"width":234,"var":"button_cancel","stateNum":1,"skin":"ui/login/button_logout.png","labelSize":40,"labelFont":"SimHei","labelColors":"#ffffff","label":"取 消","height":71,"centerX":114,"anchorY":0.5,"anchorX":0.5}}]}]};
        return FeedBackUI;
    })(View);

3.创建操作UI的逻辑类JS文件:目录地址如下:

4.index.html文件中添加JS文件的路径:

5.编写最重要的逻辑类代码:

/*
* 反馈界面
* 作者:**** 日期:2018/12/16
*/
var FeedBackWindow = (function(){
    ss.FeedBackWindow = function(argObj){
         this.__super.call(this,argObj);      //在 Javascript 中实现调用父类同名方法的语法糖(this.__super()),call是回调方法执行,因为 uper 为关键字,所以使用了_super 代替
    };
    Laya.class(ss.FeedBackWindow,"ss.FeedBackWindow",ss.DialogBehavior);

    var _proto = ss.FeedBackWindow.prototype;  //定义一个变量实现原型的接收

    _proto.rawResArray = [                                                      //这部分是调用UI基类DialogBehavior.js中的loadRes方法以及onRawResLoadCompeleted方法
        { url: "res/atlas/ui/nineGridGrey.atlas", type: Laya.Loader.ATLAS },
        { url: "res/atlas/ui/main.atlas", type: Laya.Loader.ATLAS },    //加载资源的路径,加载的资源类型是图集资源
    ];

    _proto.path = "Main.FeedBackUI";   //这个路径设置为layaUI.max.all.js文件中:CLASS$(FeedBackUI,‘ui.Main.FeedBackUI‘,_super);

    _proto.uiConfig = {layer: G.LAYER_NORMAL, alpha: G.UI_WITHOUT_ALPHA }; //设置层级,这部分是调用到UI管理类UIManager.js以及src/data/目录下的Constants.js文件(设置常量)

    _proto.start = function () {
        this.monitorBtns();
    };

     _proto.monitorBtns = function () {   //监听鼠标事件,执行回调函数

        utils.onButtonScaleEvent(this.mainUI.btn_close, this, "onClickCloseBtn");
        utils.onButtonScaleEvent(this.mainUI.button_submit, this, "onClickSubmit");
        utils.onButtonScaleEvent(this.mainUI.button_cancel, this, "onClickCloseBtn");
    };

    _proto.onClickSubmit = function (){
          var arr=[];
          //定位到UI组件TextArea,调用该组件
          arr.push(this.mainUI.FeedBackText.text);
          //console.log(arr);
          //获取FeedBackText的内容

          //获取到的内容存储到数组arr

          //提交内容保存到本地
          Laya.LocalStorage.setItem("feedbackText",arr);
          this.destroy();

    }

    _proto.onClickCloseBtn = function () {
        this.destroy();
    };

    return FeedBackWindow;
})();

原文地址:https://www.cnblogs.com/hqutcy/p/10116268.html

时间: 2024-08-02 05:22:11

LayaBox开发实战之实现一个简单的模板类的相关文章

iOS开发UI篇—实现一个简单的手势解锁应用(基本)

iOS开发UI篇—实现一个简单的手势解锁应用(基本) 一.实现效果 实现效果图: 二.手势解锁应用分析 1.监听手指在view上的移动,首先肯定需要自定义一个view,重写touch began,touch move等方法,当手指移动到圈上时,让其变亮.可以通过button按钮来实现. 2.界面搭建 背景图片(给控制器的view添加一个imageview,设置属性背景图片) 九个按钮(把九个按钮作为一个整体,使用一个大的view来管理这些小的view,这些小的view就是9个button.如果使

iOS开发UI篇—实现一个简单的手势解锁应用(完善)

iOS开发UI篇—实现一个简单的手势解锁应用(完善) 一.需要实现的效果 二.应用完善 1.绘制不处于按钮范围内的连线 2.解决bug(完善) bug1:如果在began方法中通知view绘图,那么会产生bug.因为,当前点没有清空,在手指移开之后要清空当前点.可以在绘制前进行判断,如果当前点是(0,0)那么就不划线.或者在began方法中不进行重绘. bug2:无限菊花.自定义view的背景色为默认的(黑色),只要重写了drawrect方法,view默认的背景颜色就是黑色的,因为上下文默认的颜

写一个简单的模板引擎

写一个简单的模板引擎 ES6 开始支持模板字符串(Template literals),支持如下的写法: `string text ${expression} string text`; 其实在很多模板引擎中,常常会有这样需求,比如常用的 doT,使用类似的语法 <div>{{=1+2}}</div> // 或者支持循环或者判断 {{for(var i in it){}}} <span>{{=i}}</span> {{}}} 简单插值的实现 我们先来看看一个

Python+Selenium进阶版(八)- Python自定义封装一个简单的Log类

目标:如何写一个Python日志类,用来输出不同级别的日志信息到本地文件夹下的日志文件里. 练习场景: 我们需要封装一个简单的日志类,主要有以下内容: 1.生成的日志文件格式是 年月日分秒.log 2.生成的XXX.log文件存储在项目根目录下Logs文件夹下 3.这个日志类,支持INFO,ERROR两种日志级别 4.日志里,每行日志输出,时间日期+执行类名称+日志级别+日志描述 解决思路: 1.在根目录下新建一个Logs的文件夹,获取这个Log的相对路径: 2.日志的保存命名,需要系统时间:

Android开发:如何创建一个简单的HelloWorld

HelloWorld是继搭建环境之后又需要完成的一个步骤,要创建一个简单的HelloWorld,首先创建第一个名为HelloWorld的Android项目. 通过File -> New -> Project 菜单,建立新项目"Android Project",选择一些参数 ,你可以选择你喜欢的,但是前提是你要创建相应的AVD.这里我填的是: Project name:HelloWorld Contents:选择Create new project in workspace,

Android 多媒体开发学习之制作一个简单的画板

一个简单的画板,可以绘制,可以选择颜色,可以保存. 当然了这种工具一般常用的通讯软件都是会有的,比如QQ, 飞秋等 其中我们必须监听手指的触摸事件,手指的触摸事件就分为3种: 按下,抬起,移动. 通常我们只需要关系按下的时候,然后就是整个手指滑动的过程.然后将手指滑动的过程绘制为不同的直线.当然也可以设置绘制的颜色,绘制直线的宽度等. public class MainActivity extends Activity { private int TouchX; private int Touc

iOS开发--实现一个简单的猜图游戏

猜图游戏和我们之前玩过的差不多,只不过图片少了很多,只有几个,不过相应的功能都已经实现了: 点击大图,图片就回被放大,再点击图片或者图片的边缘就会恢复yuanyu

node.js中socket.io的使用(node.js开发实战详解一个案例分析)

啊,又是这本书.好像里面有个交互图,呃...那个消息响应的顺序好像与我的程序不同. 其实问题也不大,操作实例,控制台运行该文件app.js开启服务: var io=require('socket.io').listen(8080,{log:false}); io.sockets.on('connection',function (socket){ socket.on('msg',function(data){ console.log(data); if(data.state){ if(data.

一个简单的购物类网站

最近给学校做了一个购物类的网站:捐赠网站;模式和淘宝是一样的:选择商品->选择数量->填写留言(评价)->付款(支付宝付款);逻辑比较简单. 接下来的几天,我将就编程中遇到的一些问题和体会说说.下面列出了想说的几点; 1.html 文档对象模型 DOM: 2.安全验证方面:比如客户端向服务器传输数据时怎么保证数据的安全性;