cocos js 做出按钮选中效果示例:
一,首先使用cocos新建一个Cocos2d-js的新项目,然后再cocostudio中创建一个场景,在场景中添加三个按钮分别设置三态的图片
二,打开编辑器,实现代码如下:
var HelloWorldLayer = cc.Layer.extend({
ctor:function () {
this._super()
//导入cocostudio中拼好的界面
mainscene = ccs.load(res.MainScene_json).node
this.addChild(mainscene)
this.teamButton = ccui.helper.seekWidgetByName(mainscene,"Button_0")
var btn2 = ccui.helper.seekWidgetByName(mainscene,"Button_1")
var btn3 = ccui.helper.seekWidgetByName(mainscene,"Button_2")
//先默认设置一个按钮为选中状态 this.teamButton.setBrightStyle(ccui.Widget.BRIGHT_STYLE_HIGH_LIGHT)
this.teamButton.setEnabled(false)
var teamInfo = this.teamButton
this.teamButton.addTouchEventListener(this.selectedBtn1,this)
btn2.addTouchEventListener(this.selectedBtn2,this)
btn3.addTouchEventListener(this.selectedBtn3,this)
return true
},
selectedBtn1: function (sender, type) {
if(type == ccui.Widget.TOUCH_ENDED){
this.callBack(sender)
cc.log("==========商店界面")
}
},
selectedBtn2: function (sender, type) {
if(type == ccui.Widget.TOUCH_ENDED){
this.callBack(sender)
cc.log("==========卡牌界面")
}
},
selectedBtn3: function (sender, type) {
if(type == ccui.Widget.TOUCH_ENDED){
this.callBack(sender)
cc.log("==========战斗界面")
}
},
callBack: function (sender) {
if (this.teamButton == sender){
return
}else{
this.teamButton.setBrightStyle(ccui.Widget.BRIGHT_STYLE_NORMAL)
this.teamButton.setEnabled(true)
sender.setBrightStyle(ccui.Widget.BRIGHT_STYLE_HIGH_LIGHT)
sender.setEnabled(false)
this.teamButton = sender
}
},
})
var HelloWorldScene = cc.Scene.extend({
onEnter:function () {
this._super()
var layer = new HelloWorldLayer()
this.addChild(layer)
}
})
三,运行就可以查看界面,点击不同的按钮显示不同的输出结果
[Log] ==========商店界面 (CCDebugger.js, line 331)
[Log] ==========卡牌界面 (CCDebugger.js, line 331)
[Log] ==========战斗界面 (CCDebugger.js, line 331)
test:function(){
varballoonPurpleObj =this.balloonPurple.getBoundingBox()
//var tonguePlateObj = this.tonguePlate.getBoundingBox()
vardrawNode =newcc.DrawNode()
drawNode.clear()//清除节点缓存
drawNode.ctor()//构造函数
drawNode.drawRect(cc.p(balloonPurpleObj.x,balloonPurpleObj.y),cc.p(balloonPurpleObj.x+balloonPurpleObj.width,balloonPurpleObj.y+balloonPurpleObj.height),cc.color(180,180,180))
drawNode.setZOrder(100)
this.addChild(drawNode)//加入Layer层
},
查看js相关文档,常有关于全局变量和局部变量的描述,作用域 和c++,go,等语言的概念不太相同。js中关于全局变量的描述通常指的是,在同一个js模块文件中,可以访问。而c++,go等项目,全局变量通常指的是,整个项目可以访问。
所以容易导致理解上的偏差。在定义模块,使用export 导出变量或类后,就可以 在其他 js模块中使用了。
当然了,全局变量,在各语言项目中,应尽量避免使用。如果可以,尽量使用统一的全局模块管理。
--the end