자바와 안드로이드적인 Cocos2D-JS JS 호출에서 3.0 RC2에,적인 Cocos2D-JS 또한 목표 - C, 다음 샘플 코드 iOS 및 맥 JS 직접 호출하는 방법을 제공한다 :
var ojb = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....);
에서 jsb.reflection.callStaticMethod
방법, 우리는 OC, 메소드 이름의 클래스 이름을 통해 전달 된 매개 변수 직접 정적 방법 OC를 호출 할 수 있으며, OC는 반환 값을 얻을 수 있습니다.
범주
- 매개 변수 클래스 이름 만 자바와는 달리, 클래스 이름 경로를 필요로하지 않는다는 OC에 클래스 이름을 전달해야합니다. 예를 들어, 프로젝트 아래에 새 범주를 만들
NativeOcClass
오랫동안 그 프로젝트에, 그때 그는 클래스 이름만큼,NativeOcClass
당신이 그 경로에 통과 할 필요가 없습니다.
-
수입 <재단 / Foundation.h>
-
@interface NativeOcClass을 : NSObject의를
-
+ ( BOOL) :( callNativeUIWithTitle 는 NSString *) :( 표제 andContent 는 NSString *) 함유량;
-
@종료
방법
- JS은 클래스 OC OC 정적 방식 지원을 반영.
- 우리는 방법의 전체 이름을 전달해야한다는 것을, 노트에 매개 변수와 특히 방법을 메소드 이름을 비교하기 위해, 당신은 그에게 필요합니다 : 그 벨트. 위의 예에 따르면. andContent :이 때, 메소드 이름은 callNativeUIWithTitle입니다, 그들 사이 놓치지 마세요 :
- 이 인수가없는 경우, 그 다음 코드를 :, 필요하지 않고, 자신의 메소드의 이름은
callNativeWithReturnString
아무 인수가 없기 때문에, 그는 필요하지 않습니다 OC를 작성하는 방법과 일치.
+(NSString *)callNativeWithReturnString;
사용의 예
- 다음 샘플 코드는 위의 호출
NativeOcClass
방법, 우리는 호출 할 필요가 JS의 레이어를 :
-
VAR RET = jsb.reflection.callStaticMethod ( "NativeOcClass"
-
"callNativeUIWithTitle : andContent",
-
"적인 Cocos2D-JS"
-
) "그래! 당신은 기본 UI 반사에서 전화";
- 다음은 OC를 달성하는 방법은, 당신이 볼 수있는 팝업 대화 상자의 기본이다. 그리고에
title
와content
당신의 매개 변수를 설정 전달, 반환 부울 반환 값.
-
+ ( BOOL) :( callNativeUIWithTitle 는 NSString *) :( 표제 andContent 는 NSString *) 콘텐츠 {
-
UIAlertView alertView * = [[ UIAlertView ALLOC] initWithTitle : 타이틀 메시지가 위임 내용 : 자기 cancelButtonTitle : @ otherButtonTitles "취소" @ "OK"를 닐];
-
[alertView 쇼];
-
반환 사실;
-
}
- 이 시점에서, 당신은 할 수 있습니다
ret
접수에 반환 된 OC에서 값 (true)를 반환합니다.
주의하십시오
OC 구현에서, 상기 방법의 경우 파라미터는 플로트, INT, BOOL의 사용을 필요로 변환 다음 유형을 사용
- 플로트, INT 유형, 사용의 NSNumber
- BOOL에 bool 형식을 사용하십시오.
- 예를 들어, 다음 코드는, 우리는 두 개의 부동 소수점 숫자를 통과 한 다음 합병에 대한 그들의 수익을 계산, 우리는 매개 변수로 입력하는 대신 INT, 부동의의 NSNumber를 사용합니다.
-
+ ( 플로트) :( addTwoNumber 의 NSNumber *) :( NUM1과 의 NSNumber *) {NUM2
-
플로트 결과 = NUM1하는 FloatValue] + [NUM2하는 FloatValue];
-
결과를 반환;
-
}
- 현재 매개 변수와 반환 값이 INT, 플로트, 부울, 문자열을 지원 종류의 나머지는 지원되지 않습니다.
HTTPS : //blog.csdn.net/qinning199/article/details/42045765에서 재판