cocos js 怎样做出按钮选中效果

JavaScript016

cocos js 怎样做出按钮选中效果,第1张

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