cocos-js怎么调用oc获取当前电量

JavaScript010

cocos-js怎么调用oc获取当前电量,第1张

下面的示例代码将调用上面NativeOcClass的方法,在js层只需要这样调用:

var ret = jsb.reflection.callStaticMethod("NativeOcClass",

"callNativeUIWithTitle:andContent:",

"cocos2d-js",

"Yes! you call a Native UI from Reflection")

这里是这个方法在OC的实现,可以看到是弹出一个native的对话框。并把title和content设置成传入的参数,并返回一个boolean类型的返回值。

+(BOOL)callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content{

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:content delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]

[alertView show]

return true

}

此时,就可以在ret中接受到从OC传回的返回值(true)了。

注意:

在OC的实现中,如果方法的参数需要使用float、int、bool的,请使用如下类型进行转换:

float,int 请使用NSNumber类型

bool请使用BOOL类型。

例如下面代码,传入2个浮点数,然后计算他们的合并返回,使用NSNumber而不是int、float去作为参数类型。

+(float) addTwoNumber:(NSNumber *)num1 and:(NSNumber *)num2{

float result = [num1 floatValue]+[num2 floatValue]

return result

}

cocos2d是OC写的,cocos2dx是c++写的

cocos2d只能在ios下运行,cocos2dx是跨平台的,ios和android平台都可以运行

cocos2d是外国人搞的,cocos2dx是中国人搞的。

cocos2dx是cocos2d的C++写法,但是游戏架构是一样的,都包含了精灵,导演,场景,动作等概念,他们是一脉相承的东西。你可以直接研究cocos2dx,没有什么障碍。虽然是有了cocos2d才有的cocos2dx,但是cocos2dx包含了cocos2d的主要思想,因此可以直接研究cocos2dx。

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)