2012-02-13 2 views

답변

6

네이티브 코드로 표현할 수있는 모든 객체를 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 예제입니다. 자바와 비슷한 점이 있지만 네이티브 코드에서 복잡한 객체를 반환 할 수도 있습니다.

http://help.adobe.com/en_US/air/extensions/index.html

-1

완성 된 프로세스의 반환 값은 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 문서를 참조하십시오.

+0

이는 NativeProcess, 원주민하지 확장을 위해 사실을 사용하는 것이 좋습니다. –

0

허용 된 대답은 원래의 질문에 대한 정확한되지 않습니다 :

자세한 내용은 여기를 문서의 힙이 있습니다. 당신은 구조체를 반환하고 싶습니다 ... 실제로 그렇게 할 수는 없지만 이것을하기위한 적절한 방법은 네이티브 구조체/클래스를 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 

더 많은 정보를 반환

관련 문제