cocos2d-html5 简易 下拉表单 控件

刚才在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 简易 下拉表单 控件

时间: 2024-08-03 17:42:35

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

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

单行输入框,常见的文本输入框,也就是input的type属性值为text.在Bootstrap中使用input时也必须添加type类型,如果没有指定type类型,将无法得到正确的样式,因为Bootstrap框架都是通过input[type=“?”](其中?号代表type类型,比如说text类型,对应的是input[type=“text”])的形式来定义样式的. 为了让控件在各种表单风格中样式不出错,需要添加类名“form-control”,如: <form role="form"

5.9 HTML5 新增表单控件 ---不是特别重要

HTML5 新增表单控件新增类型:网址 邮箱 日期 时间 星期 数量 范围 电话 颜色 搜索这些控件基本不使用:因为在不同的浏览器中效果不一样.产品设计中不允许多个浏览器效果不同,必须统一. <label>网址:</label><input type="url" name="" required><br><br> <label>邮箱:</label><input type=&q

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

css在给select下拉表单设置样式如边框时可以轻松搞定,而我们在不喜欢其默认的下拉箭头的样式时试图通过background:url(图片路径)来修改之,则往往会出现浏览器的兼容性问题,在网上查了好多资料,最好的解决办法也是大神们用js来模拟下拉表单.额~,好吧,暂且就按照大神们的办法来解决这个问题吧. 下边来说说css如何解决select的option高度的? 有时我们在设置了select的高度后,发现其option的高度还是默认的高度,跟我们设置的select的高度大相径庭,很显然,这不是

jsp简单练习-简单的下拉表单

<%@ page contentType="text/html; charset=gb2312" %> <html> <body> <form name="form1" action="SwitchApp.jsp" method="post"> 请选择一种颜色: <select name="ys"> <option value="r

HTML5(常用的表单控件)

常用的HTML5的表单控件: Input 类型: color color 类型用在input字段主要用于选取颜色,如下所示: 从拾色器中选择一个颜色: 选择你喜欢的颜色: <input type="color" name="favcolor"> Input 类型: email email 类型用于应该包含 e-mail 地址的输入域. 在提交表单时,会自动验证 email 域的值是否合法有效: E-mail: <input type="e

DIV+CSS+JS仿Select下拉表单网页特效源代码下载

DIV+CSS+JS仿Select下拉表单 原文:DIV+CSS+JS仿Select下拉表单网页特效源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463331830784.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <

制作下拉表单

第一步设置好初步样式 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>下拉表单</title> 6 </head> 7 <body> 8 <ul class='ul_all'> 9 <li class='li_1'> 10 <a h

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

前言:本文主要针对自定义下拉表单制作,下拉表单的内容是取至于数据库,即动态实现下拉表单 正文: 动态实现下拉表单有两种方法: 一.自己手动写 html 模板中的 <form ...> </form> 在views 中,将所需要的数据传递过去,比如 names_list = [1, 2, 3, 4] 在 html 中 <select> {% for x in name_list %} <option value ="{{ x }}">{{

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

FormData是XMLHttpRequest Level 2添加的一个新的接口,利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件. 主流手机系统基本都是webkit内核,可以使用. var form= new FormData (optional HTMLFormElement