热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js2dx-mysql教程

1.TableView大

1.TableView 大


1.TableView

大小、方向x或y、位置、层次

var table = this.addTableview(cc.size(600, 60), cc.SCROLLVIEW_DIRECTION_HORIZONTAL,cc.p(20, winSize.height / 2 - 150), 4)

addTableview:function(size, direction, pos, zOrder){
var tableView = cc.TableView.create(this, size);
tableView.setDirection(direction);
tableView.setPosition(pos);

tableView.setVerticalFillOrder(cc.TABLEVIEW_FILL_BOTTOMUP); //idx是从最小的开始还是从最大的开始
tableView.setDelegate(this);
this.addChild(tableView, zOrder);
return tableView;
},


tableCellAtIndex:function (table, idx) {
var cell = table.dequeueCell();
if (!cell) {

cell = new TableViewCell();
}

//new 一个 layer ,把控件放到 layer 上,在把 layer 放到 cell 上

//注意: 安照 cell 的大小去摆放 layer 上的 UI 位置。

cell.addChild(layer);

if(cell.getChildByTag(tag)){

cell.removeChildByTag(tag);

}

layer.setTag(tag);


return cell;
},
numberOfCellsInTableView:function (table) { return 25;}

tableCellTouched:function (table, cell) {},
cellSizeForTable:function (table) {return cc.size(60, 60);},

scrollViewDidScroll:function (view) {},
scrollViewDidZoom:function (view) {},

2.TableViewDelegate

继承ScrollViewDelegate:有一个自己的方法 setDelegate(this)

tableCellTouched:function (table, cell) {}

屏蔽

onTouchesBegan:function (touches, event) {}


3.TableViewDataSource

继承与Class setDataSource(this)

cellSizeForTable:function (table) {return 0;},
tableCellAtIndex:function (table, idx) {return 0;},
numberOfCellsInTableView:function (table) {return 0;}


4.Cell

继承Node,cell上面添加 layer 等进行重写操作


5.ScrollView

向ScrollView放layer设置layer大小,之后UI放到这个layer上。layer就可以滑动了,也可以setDelegate

var layer = cc.Layer.create();

layer.setContentSize(cc.size(width , height ));

addScroll:function(size, layer, pos, direc, offset, target){
var scrollView = cc.ScrollView.create(size, layer);
scrollView.setPosition(pos);
scrollView.setDirection(direc);
scrollView.setContentOffset(offset);
target.addChild(scrollView);
return scrollView;
},

var spriter = xxx.create();
layer.addChild(spriter);


setDelegate

scrollViewDidScroll:function (view) {},
scrollViewDidZoom:function (view) {},

设置layer大小,向layer上放 UI 是从layer的左下角cc.p(0, 0)开始的。

如果 layer == size offset 设置 cc.p(0, 0) layer和scroll将会重合,layer超过offset的y多少x cc.p(0, -x) layer的上研和scroll的上研重合


1.通过 size 和 pos 确定 scroll 框的大小和位置

2.通过设定 spriter 的位置确定layer上第一个 UI 的位置,调整到刚好在scroll的框上研。

3.通过 setContentOffset 设置一开始 spriter 就在那个上研的位置,

4.之后在添加其他 UI

5.layer上添加其他 UI 左下角 是cc.p(0, 0)点

6.取消缓冲

table.setBounceable(false);



5.上拉刷新和下拉刷新


1.tableview
到最底下了,在向上拉一点会有一个向上的缓冲,在回到0 0

2.同理到最上面了在向下拉也会有一个向下的缓冲

3.中间缓冲,根据你移动tableview的速度进行


注意事项:

1.触摸结束才能进行上拉刷新操作

2.tableview里的内容 heght 度大于某个值才能进行上拉刷新

3.上啦自动滚动进行处理起处理。


主要实现原理:

tableview有自己固定的大小,在tableview里面有一个view,当滚动tableview时滚动的只是里面得view,此时会调用scrollViewDidScroll:function (view) 。


以y1作为对齐点,开始的时候y2的坐标相对于y1是 负的,当滚动view时y2和y1重合此时y1坐标为 0, 0。在向上滚动y2坐标为 正 的。此时就可以根据 y2向上的坐标去上拉刷新了。

_isRefresh 是否触摸结束,_isAutoUp是否是自动向上滚动的,这里对自动向上滚动记录的还不是很好,应该记录一下触摸结束后,记录一下y1 坐标,在滚动的时候滚动时候 y2 坐标,

y1 与 y2相比,即可判断是否是自动滚动了,



常用方法

TableView

重新加载、填充cell是从上到下还是相反、设置位置可以一开始就显示哪行的cell而不是从头开始显示

reloadData(); 从新执行tableview里的 一个代理里和一个继承里的方法

setVerticalFillOrder(cc.TABLEVIEW_FILL_BOTTOMUP) tableCellAtIndex:function (table,idx) idx是从最小的开始还是从最大的开始

setContentOffset(cc.p(0,-contentOffset));

dequeueCell() tableview中cell的重用机制:根据每个cell的宽或高,在根据tableview的宽或高,得出整个界面能够显示几个cell,cell.height * num=tableview.height

得出界面能够显示 cell的个数 num, 就new cell()个数=num+1,以后没上啦 或 下啦tableview,都是从队列里取出cell,

cellAtIndex(idx) cell有setIdx和getIdx得到具体是那个cell tableCellAtIndex:function (table, idx) 创建cell时默认的设置idx

setDataSource(this) 调用本对象里实现的DataSource方法 某人是本对象

setDelegate(this) 调用本对象里实现的Delegate方法 必须设定

maxContainerOffset 设置显示最后一个 cell



上拉刷新代码

var CustomTableViewCell = cc.TableViewCell.extend({
    draw:function (ctx) {
        this._super(ctx);
    }
});

var TableViewTestLayer = cc.Layer.extend({

    _table:null,
    _num:0,
    _array:[],

    _isRefresh:false,
    _refreshLabel:null,
    _isAutoUp:false,
    _nowY:0,

    appData:function(){
        this._num += 10;
        for(var i=0; i 70 && view.getContentSize().height > 350){
                this.appData();
            }
        }
        if(view.getContentOffset().y > 20){
            this._refreshLabel.setString("上拉即可刷新");
            this._refreshLabel.setVisible(true);
        }
        if(view.getContentOffset().y > 70){
            this._refreshLabel.setString("松开即可刷新");
        }
        cc.log(" : " + view.getContentOffset().y);
        if(this._isAutoUp){//松开后向上谈起
            if(view.getContentOffset().y > 5){
                this._refreshLabel.setVisible(false);
            }else{
                this._isAutoUp = false;
            }
        }

        if(view.getContentSize().height <650){
            this._refreshLabel.setVisible(false);
        }

    },

    addLabel:function(string, pos, zOrder, type, fontSize, color, anchor){
        var label = cc.LabelTTF.create(string, type, fontSize);
        label.setPosition(pos);
        label.setAnchorPoint(anchor);
        label.setColor(color);
        this.addChild(label, zOrder);
        return label;
    },

    init:function () {
        if (!this._super()) {
            return false;
        }

        this.appData();
        this.setTouchEnabled(true);
        this._refreshLabel = this.addLabel("上拉即可刷新", cc.p(640/2, 960/2), 5, "Helvetica", 25,
            cc.c3b(240,230,220), cc.p(0.5, 0.5));
        this._refreshLabel.setVisible(false);

        tableView = cc.TableView.create(this, cc.size(60, 350));
        tableView.setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL);
        tableView.setPosition(cc.p(winSize.width - 150, winSize.height / 2 - 150));
        tableView.setDelegate(this);
        this.addChild(tableView);
        tableView.reloadData();

        this._table = tableView;
        this._nowY = tableView.getContentOffset().y;

        return true;
    },
    scrollViewDidZoom:function (view) {
    },
    tableCellTouched:function (table, cell) {
    },
    cellSizeForTable:function (table) {
        return cc.size(60, 60);
    },

    tableCellAtIndex:function (table, idx) {

        var strValue = idx.toFixed(0);
        var cell = table.dequeueCell();
        var label;
        if (!cell) {
            cell = new CustomTableViewCell();
            var sprite = cc.Sprite.create(s_image_icon);
            sprite.setAnchorPoint(cc.p(0,0));
            sprite.setPosition(cc.p(0, 0));
            cell.addChild(sprite);

            label = cc.LabelTTF.create(strValue, "Helvetica", 20.0);
            label.setPosition(cc.p(0,0));
            label.setAnchorPoint(cc.p(0,0));
            label.setTag(123);
            cell.addChild(label);
        } else {
            label = cell.getChildByTag(123);
            label.setString(strValue);
        }

        return cell;
    },

    numberOfCellsInTableView:function (table) {
        return this._array.length;
    }

});

推荐阅读
  • 深入解析Java中的锁类型及其应用场景
    本文详细介绍了Java中常见的锁类型,包括乐观锁与悲观锁、独占锁与共享锁、互斥锁与读写锁、可重入锁、公平锁与非公平锁、分段锁、偏向锁、轻量级锁、重量级锁以及自旋锁。每种锁的特性、作用及适用场景均有所涉及。 ... [详细]
  • 本文探讨了HDU 4035的问题,涉及一个由n个房间组成的迷宫,这些房间通过n-1条隧道相互连接,形成一棵树结构。任务是从起点1号房间出发,计算到达出口所需经过的平均隧道数量,考虑了在每个房间中可能发生的三种情况及其相应概率。 ... [详细]
  • 一、数据更新操作DML语法中主要包括两个内容:查询与更新,更新主要包括:增加数据、修改数据、删除数据。其中这些操作是离不开查询的。1、增加数据语法:INSERTINTO表名称[(字 ... [详细]
  • 本文提供了唐代诗人高瑾的《晦日重宴》一诗的现代汉语翻译及其艺术特点的赏析。 ... [详细]
  • 本文详细介绍了如何通过Percona插件监控MySQL 5.7数据库,包括环境准备、插件安装、配置调整及数据测试等步骤,旨在为用户提供一个高效且稳定的监控解决方案。 ... [详细]
  • 本文介绍了如何通过安装 VirtualBox 和 Vagrant 来快速搭建和管理虚拟机环境。我们将详细探讨如何选择合适的 Box 镜像,以及如何高效地下载、添加和管理这些镜像。 ... [详细]
  • Django框架的使用教程mysql数据库[三]
    Django的数据库1.在Django_test下的view.py里面model定义模型fromdjango.dbimportmodels#Createyourmodelshere ... [详细]
  • HTML中用于创建表单的标签是什么
    本文将详细介绍HTML中用于创建表单的标签及其基本用法,包括表单的主要特性和常用的属性设置。如果您正在学习HTML或需要了解如何在网页中添加表单,这将是一个很好的起点。 ... [详细]
  • SQL注入实验:SqliLabs第38至45关解析
    本文深入探讨了SqliLabs项目中的第38至45关,重点讲解了堆叠注入(Stacked Queries)的应用技巧及防御策略。通过实际案例分析,帮助读者理解如何利用和防范此类SQL注入攻击。 ... [详细]
  • 本文探讨了梯形图为何成为嵌入式软件机器编程中的理想选择,分析其特点及优势。 ... [详细]
  • 解决fetch上传图片至微信公众号H5页面的问题
    在近期的一个项目需求中,需要在微信公众号内嵌入H5页面,并实现用户通过该页面上传图片的功能,包括拍摄新照片或从已有相册中选择。前端开发中采用了fetch API进行接口调用,但遇到了上传图片时数据无法正确传递的问题。 ... [详细]
  • 特斯拉超级散户:坐拥631万股价值逾70亿美元
    特斯拉股价上周五收盘上涨3.43%,达到1114美元,这意味着KoGuan能够以当前价格的一半购入特斯拉股票。据透露,KoGuan持有的特斯拉股份市值已超过70亿美元。KoGuan表示,投资成功的关键在于对特斯拉CEO埃隆·马斯克的信任。 ... [详细]
  • 如何将Redis配置为后台服务
    本文介绍了在安装Redis后,如何通过修改配置文件使其以守护进程模式在后台运行,避免因控制台被占用而无法进行其他操作的问题。 ... [详细]
  • Linux 文件系统结构详解
    本文详细介绍了Linux操作系统的文件系统结构,包括其独特的树状目录体系、根目录的作用、目录与磁盘分区的关系等,并对各主要目录的功能进行了深入解析。 ... [详细]
  • 本文深入探讨了TCC事务模型中Try阶段的具体操作流程,以及Confirm阶段的确认逻辑,旨在为开发者提供更清晰的理解。 ... [详细]
author-avatar
我爱你2602912303
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有