刚才在CH5的群里问了问  有没有大侠写过 下拉表单控件啊!  没人鸟窝 ,DZ老师表示非常伤心啊  ,于是乎  自己写一个把 共享给大家。

效果图上一个  仅仅实现了一个最最主要的控件  非常easy  别吐槽啊,以后有空我会完好一下的,假设有朋友自愿帮忙完好一下就更好了。

有不论什么问题请加DZ老师的QQ 460418221

引擎版本号 : 2.2.2

原理:有空再写吧

源代码:

/**
* Created with JetBrains WebStorm.
* User: Dz_Yang
* Date: 14-4-29
* Time: 上午13:19
* To change this template use File | Settings | File Templates.
*/ var Pull_down_menu = cc.Layer.extend({
WIDTH:0,
HEIGHT:0,
COLOR:null,
STR_ARRAY:null, SElECTS:null,
SELECTING_ID:null, STATE:0, init:function(){
this._super();
var winsize = cc.Director.getInstance().getWinSize();
this.SElECTS = new Array(); for(var i=0;i<this.STR_ARRAY.length;i++){
this.SElECTS[i] = cc.LayerColor.create(this.COLOR, this.WIDTH, this.HEIGHT);
var txt = cc.LabelTTF.create(this.STR_ARRAY[i],"Arial",this.HEIGHT * 2/3);
txt.setPosition(cc.p(this.WIDTH/2,this.HEIGHT/2));
this.SElECTS[i].addChild(txt);
this.SElECTS[i].setAnchorPoint(cc.p(0,1));
this.SElECTS[i].setPosition(cc.p(0,0-(i+1)*this.HEIGHT));
this.addChild(this.SElECTS[i]);
} this.choose(0); this.setTouchEnabled(true);
return true;
}, onTouchesBegan:function (touches, event){
if(touches.length == 1){
var click_id = null; for(var i=0;i<this.SElECTS.length;i++){
if(cc.rectContainsPoint(this.SElECTS[i].getBoundingBox(),cc.p( touches[0].getLocation().x -this.getPositionX() , touches[0].getLocation().y -this.getPositionY()) )){
click_id = i; break;
} else{ }
} if(click_id != null){
if(this.STATE == 0){
if(click_id == this.SELECTING_ID){
this.open();
}
}else if(this.STATE == 1){
this.choose(click_id);
}
} }
},
onTouchesMoved:function (touches, event){},
onTouchesEnded:function (touches, event){}, draw:function(){
cc.drawingUtil.setDrawColor4B(255, 255, 255, 255);
cc.drawingUtil.setLineWidth(3);
cc.drawingUtil.drawLine(cc.p(0,0),cc.p(this.WIDTH,0));
cc.drawingUtil.drawLine(cc.p(0,0),cc.p(0,this.HEIGHT));
cc.drawingUtil.drawLine(cc.p(0,this.HEIGHT),cc.p(this.WIDTH,this.HEIGHT));
cc.drawingUtil.drawLine(cc.p(this.WIDTH,this.HEIGHT),cc.p(this.WIDTH,0)); }, open:function(){ this.STATE =1;
for(var i=0;i<this.SElECTS.length;i++){
this.SElECTS[i].setPosition(cc.p(0,0-(i+1)*this.HEIGHT));
this.SElECTS[i].setVisible(true);
}
},
close:function(){
this.STATE =0;
for(var i=0;i<this.SElECTS.length;i++){
this.SElECTS[i].setVisible(false);
}
}, choose:function(id){
this.SELECTING_ID = id;
this.close();
this.SElECTS[id].setVisible(true);
this.SElECTS[id].setPosition(cc.p(0,0));
}, getSelectedID:function(){
return this.SELECTING_ID;
} }); Pull_down_menu.create = function(color, width, height, str_array){
var re = new Pull_down_menu();
re.WIDTH = width;
re.HEIGHT = height;
re.COLOR = color;
re.STR_ARRAY = str_array;
re.init();
return re; };

用法:

var pdm = Pull_down_menu.create(cc.c4(100,100,100,255),70,20,["丁丁","拉拉","迪西","小波"]);//第一个选项是底色,第二个是宽 第三个高 最后是一个字符串数组
pdm.setPosition(cc.p(170,winsize.height-150));
this.addChild(pdm);//是用pdm.getSelectedID() 能够获取选择的选项卡的下标

欢迎转载,请标明原帖地址:http://blog.csdn.net/ycd_harry/article/details/24709603

cocos2d-html5 简易 下拉表单 控件的更多相关文章

  1. 从零开始学习前端开发 — 10、HTML5新标签及表单控件属性和属性值

    一.html5新增标签 1.结构性标签 header 定义网页的头部 nav 定义网页的导航 footer 定义网页的底部 section 定义网页的某个区域 article 定义网页中的一篇文章 a ...

  2. 415 DOM 查找列表框、下拉菜单控件、对表格元素/表单控件进行增删改操作、创建元素并且复制节点与删除、 对表格操作、通用性和标准的事件监听方法(点击后弹窗效果以及去掉效果)

    DOM访问列表框.下拉菜单的常用属性: form.length.options.selectedindex.type       使用options[index]返回具体选项所对应的常用属性:defa ...

  3. Bootstrap 表单控件一(单行输入框input,下拉选择框select ,文本域textarea)

    单行输入框,常见的文本输入框,也就是input的type属性值为text.在Bootstrap中使用input时也必须添加type类型,如果没有指定type类型,将无法得到正确的样式,因为Bootst ...

  4. 第九课 表单及表单控件 html5学习4

    表单有由表单域.提示文本.表单3部分构成 一.表单控件 input 控件 1.<input />单标签2.input属性: 可以通过type属性变换形状 value默认值 name名称 c ...

  5. [Django]下拉表单与模型查询

    前言:本文主要针对自定义下拉表单制作,下拉表单的内容是取至于数据库,即动态实现下拉表单 正文: 动态实现下拉表单有两种方法: 一.自己手动写 html 模板中的 <form ...> &l ...

  6. HTML5(常用的表单控件)

    常用的HTML5的表单控件: Input 类型: color color 类型用在input字段主要用于选取颜色,如下所示: 从拾色器中选择一个颜色: 选择你喜欢的颜色: <input type ...

  7. css解决select下拉表单option高度的办法

    css在给select下拉表单设置样式如边框时可以轻松搞定,而我们在不喜欢其默认的下拉箭头的样式时试图通过background:url(图片路径)来修改之,则往往会出现浏览器的兼容性问题,在网上查了好 ...

  8. HTML5 FormData 模拟表单控件 支持异步上传二进制文件 移动端

    FormData是XMLHttpRequest Level 2添加的一个新的接口,利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,还可以使用XMLHttpR ...

  9. AnjularJS系列2 —— 表单控件功能相关指令

    第二篇,表单控件功能相关指令. ng-checked控制radio和checkbox的选中状态 ng-selected控制下拉框的选中状态 ng-disabled控制失效状态 ng-multiple控 ...

随机推荐

  1. BZOJ 3479: [Usaco2014 Mar]Watering the Fields( MST )

    MST...一开始没注意-1结果就WA了... ---------------------------------------------------------------------------- ...

  2. maven build脚本笔记

    如果 code 只存在src/java/main 路径下,直接install就好,不必写<build> 资源文件:edu-common-config <build> <f ...

  3. HDU2005-第几天

    描述: 给定一个日期,输出这个日期是该年的第几天. 代码: #include<stdio.h> #include<string.h> #include<iostream& ...

  4. python的内置函数bin()

    bin(x) 中文说明:将整数x转换为二进制字符串,如果x不为Python中int类型,x必须包含方法__index__()并且返回值为integer: 参数x:整数或者包含__index__()方法 ...

  5. 阿里云ECS每天一件事D1:配置SSH

    近期因为项目需求,采购了两台阿里云ECS,选择的系统为CentOS 6.3 X64 安全加固版,额外买了160G的硬盘,应该够应付此项目的需求了. ECS默认已经配置好了sshd服务,可以使用root ...

  6. 禁用Java DNS缓存-Disable DNS caching

    Once an application has performed network access (i.e. urlconnection, parsing of xml document with e ...

  7. c#读写共享内存操作函数封装

    原文 c#读写共享内存操作函数封装 c#共享内存操作相对c++共享内存操作来说原理是一样,但是c#会显得有点复杂. 现把昨天封装的读写共享内存封装的函数记录下来,一方面希望给需要这块的有点帮助,另一方 ...

  8. 权限控制框架Spring Security 和Shiro 的总结

    关于权限控制,一开始感觉比较难,后来先是接触了Spring Security 学起来也比较吃力,再是学习了Shiro,感觉简单很多. 总体来说这些框架,主要做了两个事情 Authentication: ...

  9. android 之Fragment(官网资料翻译)

    原文地址: http://blog.csdn.net/lilu_leo/article/details/7671533 ***************************  正文分割线 ***** ...

  10. < high performance web sites > 阅读小记

    high performance web sites 1,减少HTTP请求数 (1)图片加载使用image maps 或者 CSS Sprite (2)使用非http协议,如(ftp:, file: ...