네이티브 코드에서 구조체를 반환 할 수 있습니까? 그것은 int 또는 boolean을 반환하는 것이 상대적으로 간단하지만 어떻게하면 더 복잡한 구조체를 actionscript로 되돌릴 수 있습니까?에어 네이티브 확장에서 구조체 반환
답변
네이티브 코드로 표현할 수있는 모든 객체를 FREObject로 반환 할 수 있습니다. 이것은 실제로 모든 Actionscript 클래스 또는 Actionscript 프리미티브 데이터 유형을 포함합니다.
FREObject returnAnArray(FREContext cts, void* funcData, uint32_t argc, FREObject argv[])
{
FREObject returnArray = NULL;
FRENewObject((const uint8_t*)"Array", 0, NULL, &returnArray, nil);
FRESetArrayLength(returnArray, 4);
for (int32_t i = 0; i < 4; i++)
{
FREObject element;
FRENewObjectFromUint32(i, element);
FRESetArrayElementAt(returnArray, i, element);
}
return returnArray;
}
액션 스크립트를 생성하는 방법에있어서 : -이 같은 것들을 포함 3 등 INT, 문자열, 배열의 BitmapData,이 ByteArray
예는 INT와 길이 4의 배열을 반환 값 0을 구성 할 클래스는 좀 더 복잡하지만 비슷한 경로를 따른다. 이것은 네이티브 C 예제입니다. 자바와 비슷한 점이 있지만 네이티브 코드에서 복잡한 객체를 반환 할 수도 있습니다.
완성 된 프로세스의 반환 값은 int
으로 제한됩니다. 하지만 당신은 표준 출력에 데이터를 기록하여 AIR 응용 프로그램에서 읽을 수 있습니다
p = new NativeProcess();
p.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
private function onOutputData(evt:ProgressEvent):void {
var outputData:String = p.standardOutput.readUTFBytes(p.standardOutput.bytesAvailable);
trace(outputData);
}
StandardOutput가 된 ByteArray 같은 IDataOut 인터페이스를 구현하는, 그래서 당신은 그것에서 어떤 기본 유형을 읽을 수 있습니다. NativeProcess 문서를 참조하십시오.
허용 된 대답은 원래의 질문에 대한 정확한되지 않습니다 :
자세한 내용은 여기를 문서의 힙이 있습니다. 당신은 구조체를 반환하고 싶습니다 ... 실제로 그렇게 할 수는 없지만 이것을하기위한 적절한 방법은 네이티브 구조체/클래스를 actionscript 클래스로 작성한 다음 ExtensionContext 객체를 사용하여 네이티브 구조체 또는 클래스 포인터를 연결하는 것입니다 귀하의 컨텍스트와 함께. 그런 다음 메서드와 속성을 직접 인터페이스 할 구조체/클래스에 메서드를 작성할 수 있습니다. 다른 구조체 또는 클래스를 반환하는 메서드가 있으면 반복적으로 프로세스를 반복합니다. 배열을
FREObject stringElement = FREObject.newObject("String element value");
FREArray array = FREArray.newArray("String", 1, false);
array.setObjectAt(0, stringElement);
//now you can return array to AS3
더 많은 정보를 반환
자바 예
http://help.adobe.com/en_US/air/extensions/WS982b6f491d178e6d6565d9b1132a79a012f-7ff8.html
또한 JSON
JSONObject jsonObject = new JSONObject();
try
{
jsonObject.put("messgae", "Hello");
jsonObject.put("name", "John");
}
catch (JSONException e)
{
}
FREObject jsonString FREObject.newObject(jsonObject.toString());
//now you can return jsonString to AS3
- 1. 에어 네이티브 창 활성 창 변경
- 2. LLVM 구조체 반환 최적화
- 3. 구조체 반환 함수
- 4. 구조체 배열을 구조체 반환 함께 PInvoke
- 5. ActionScript 3.0의 반환 배열 (플래시 및 에어)
- 6. iOS 용 어도비 네이티브 확장에서 맞춤 글꼴 사용
- 7. 구조체 데이터를 루비의 해시로 반환
- 8. 관리 대상 반환 값으로 관리되지 않는 구조체
- 9. 네이티브 반환 유형이 System.InvalidProgramException을 throw하는 이유는 무엇입니까?
- 10. 어도비 에어 푸시 알림
- 11. 네이티브 DLL에서 C# 응용 프로그램으로 구조체 배열 가져 오기
- 12. 확장에서 중첩 iframe에 액세스
- 13. 어도비 에어 플레이어없이 어도비 에어 애플리케이션을 실행하려면 어떻게해야합니까?
- 14. 에어 브레이크의 notify_airbrake 방법이 코드가 작동하는 에어 브레이크 컨트롤러에서 컨트롤러
- 15. 플렉스 에어 DataGrid itemRenderer
- 16. 에어 인터페이스 독립 프로토콜
- 17. 에어 설치 배지 오류
- 18. 어도비 에어 -를 FileMode.APPEND
- 19. 에어 플레이 (Airplay) 마이크
- 20. faultCode : Client.Error.RequestTimeout 어도비 에어
- 21. 에어 페이지 매김 문제
- 22. 에어 - 파일 압축 해제
- 23. 에어 합성 DICOM
- 24. 어도비 에어 android Netconnection.close()
- 25. 어도비 에어 라이센스 라이브러리
- 26. 에어 플래시 비교 코어
- 27. 에어 프린터 감지하기
- 28. 구조체 기초 (포인터로 구조체)
- 29. 구조체
- 30. Opera 확장에서 http 요청 모니터링
이는 NativeProcess, 원주민하지 확장을 위해 사실을 사용하는 것이 좋습니다. –