å¨callStaticMethodæ¹æ³ä¸ï¼éè¿ä¼ å ¥Javaçç±»åï¼æ¹æ³åï¼æ¹æ³ç¾åï¼åæ°å°±å¯ä»¥ç´æ¥è°ç¨Javaçéææ¹æ³ï¼å¹¶ä¸å¯ä»¥è·å¾Javaæ¹æ³çè¿åå¼ãä¸é¢ä»ç»çç±»ååæ¹æ³ç¾åå¯è½ä¼æä¸ç¹å¥æªï¼ä½æ¯Javaçè§èå°±æ¯å¦æ¤çã
ï¼1ï¼ç±»å
åæ°ä¸çç±»åå¿ é¡»æ¯å å«Javaå è·¯å¾çå®æ´ç±»åï¼ä¾å¦å¨org.cocos2dx.JavaScriptè¿ä¸ªå ä¸é¢åäºä¸ä¸ªTestç±»ï¼
é£ä¹è¿ä¸ªTestç±»çå®æ´ç±»ååºè¯¥æ¯org/cocos2dx/javascript/Test,注æè¿éå¿ é¡»æ¯æ线/,èä¸æ¯å¨Java代ç ä¸ä¹ æ¯çç¹ã
ï¼2ï¼æ¹æ³å
æ¹æ³åå¾ç®åï¼å°±æ¯æ¹æ³æ¬æ¥çååï¼ä¾å¦sumæ¹æ³çååå°±æ¯sumã
ï¼3ï¼æ¹æ³ç¾å
æ¹æ³ç¾åç¨å¾®æä¸ç¹å¤æï¼æç®åçæ¹æ³ç¾åæ¯()Vï¼è¡¨ç¤ºä¸ä¸ªæ²¡æåæ°æ²¡æè¿åå¼çæ¹æ³ãå ¶ä»ä¸äºä¾åï¼
(I)V表示åæ°ä¸ºä¸ä¸ªintï¼æ²¡æè¿åå¼çæ¹æ³ï¼
(I)I表示åæ°ä¸ºä¸ä¸ªintï¼è¿åå¼ä¸ºintçæ¹æ³ï¼
(IF)Z表示åæ°ä¸ºä¸ä¸ªintåä¸ä¸ªfloatï¼è¿åå¼ä¸ºbooleançæ¹æ³ï¼
ç°å¨æä¸äºç解äºå§ï¼æ¬å·å
ç符å·è¡¨ç¤ºåæ°ç±»åï¼æ¬å·åé¢ç符å·è¡¨ç¤ºè¿åå¼ç±»åãå 为Javaæ¯å
许å½æ°éè½½çï¼å¯ä»¥æå¤ä¸ªæ¹æ³åç¸åä½æ¯åæ°è¿åå¼ä¸åçæ¹æ³ï¼æ¹æ³ç¾åæ£æ¯ç¨æ¥å¸®å©åºåè¿äºç¸åååçæ¹æ³çã
ï¼4ï¼åæ°
åæ°å¯ä»¥æ¯0个æä»»æå¤ä¸ªï¼ç´æ¥ä½¿ç¨jsä¸çnumberï¼boolåstringå°±å¯ä»¥ã
ï¼5ï¼ä½¿ç¨ç¤ºä¾
å°ä¼è°ç¨ä¸é¢çTestç±»ä¸çéææ¹æ³ï¼
//è°ç¨helloæ¹æ³
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "hello", "(Ljava/lang/String)V", "this is a message from js");
//è°ç¨ç¬¬ä¸ä¸ªsumæ¹æ³
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(II)I", 3, 7);
cc.log(result); //10
//è°ç¨ç¬¬äºä¸ªsumæ¹æ³
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(I)I", 3);
cc.log(result); //5
ï¼6ï¼æ³¨æ
å¦å¤æä¸ç¹éè¦æ³¨æçå°±æ¯ï¼å¨androidåºç¨ä¸ï¼cocosç渲æåjsçé»è¾æ¯å¨gl线ç¨ä¸è¿è¡çï¼èandroidæ¬èº«çUIæ´æ°æ¯å¨appçui线ç¨è¿è¡çï¼æ以å¦æå¨jsä¸è°ç¨çJavaæ¹æ³æä»»ä½å·æ°UIçæä½ï¼é½éè¦å¨ui线ç¨è¿è¡ã
ä¾å¦ï¼å¨ä¸é¢çä¾åä¸ä¼è°ç¨ä¸ä¸ªJavaæ¹æ³ï¼å¼¹åºä¸ä¸ªandroidçAlert对è¯æ¡ã
//ç»æ们çæçAppActivityç±»ç¨å¾®å ç¹ä¸è¥¿
public class AppActivity extends Cocos2dxActivity {
private static AppActivity app = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = this;
}
public static void showAlertDialog(final String title,final String message) {
//è¿éä¸å®è¦ä½¿ç¨runOnUiThread
app.runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog alertDialog = new AlertDialog.Builder(app).create();
alertDialog.setTitle(title);
alertDialog.setMessage(message);
alertDialog.setIcon(R.drawable.icon);
alertDialog.show();
}
});
}
}
å¨jsä¸è°ç¨
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showAlertDialog", "(Ljava/lang/String;Ljava/lang/String;)V", "title", "hahahahha");
è¿æ ·è°ç¨å°±å¯ä»¥çå°ä¸ä¸ªandroidåççAlert对è¯æ¡äºã