什么都不说了,直接上源码,alchemy的使用直接参考官方文档

1.  声明一个头文件myutil.h,内容如下:

#ifndef MYUTIL_H

#define MYUTIL_H

#include"AS3.h"

namespace myworld{

    class IO

    {

    public:

            static AS3_Val _ByteArray_cls;

            static AS3_Val _nsName;

               static AS3_Val _clsName;

            static AS3_Val _empty_Array;

    public:

           static AS3_Val getByteArrayCls();

           static AS3_Val getEmptyArrayObj();

    };

}

#endif

2.  头文件myutil.h的实现文件,内容如下:

#include"myutil.h"

namespace myworld{

    AS3_Val IO::_nsName = NULL;

    AS3_Val IO::_clsName = NULL;

    AS3_Val IO::_ByteArray_cls = NULL;

    AS3_Val IO::_empty_Array = NULL;

 

    AS3_Val IO::getByteArrayCls()

    {

           if (_ByteArray_cls == NULL)

           {

                     /*

                      *对_ByteArray_cls的赋值,获取flash.utils.ByteArray,这里略去,不懂的朋友可以私下联系

                      */

            }

                    return _ByteArray_cls;

    }

 

    AS3_Val IO::getEmptyArrayObj()

    {

           if (_empty_Array == NULL){

                    /*

                     *对_empty_Array的赋值,获取flash.utils.ByteArray,这里略去,不懂的朋友可以私下联系

                     */

           }         

           return _empty_Array;

    }

}

3.  声明一个头文件myarray.h,内容如下:

#ifndef MYARRAY_H

#define MYARRAY_H

int writeHeader(char* header,int length);

#endif

4.  头文件myarray.h的实现文件,内容如下:

#include"myarray.h"

#include<string.h>

int writeHeader(char* header,int length){

    char* str = "helloworld";

    int size = strlen(str);

    int i = 0;

    for(i=0;i<size;i++){

        *(header+i) = *(str+i);

    }

    return size;

}

5.  Main.cpp函数的实现,内容如下:

#include"myarray.h"

#include"myarray.cpp"

#include"myutil.h"

#include"myutil.cpp"

#include"AS3.h"

#include<stdio.h>

AS3_Val getEaacHeader(void *data, AS3_Val args)

{

       char cppFlvHeader[128];

       int cppFlvHeaderLen = writeHeader(cppFlvHeader, 128);

       AS3_Val asFlvHeader = AS3_New(myworld::IO::getByteArrayCls(),myworld::IO::getEmptyArrayObj());

       char *tmpCppFlvHeader = reinterpret_cast<char *>(cppFlvHeader);

       AS3_ByteArray_writeBytes(asFlvHeader, static_cast<void*>(tmpCppFlvHeader), cppFlvHeaderLen);

       return asFlvHeader;

}

int main(){

    AS3_Val getEaacHeaderFun = AS3_Function(NULL, getEaacHeader);

    AS3_Val _API = AS3_Object("getEaacHeader: AS3ValType",getEaacHeaderFun);

    AS3_Release(getEaacHeaderFun);

    AS3_LibInit(_API);

    return 0;

}

6.  将这些文件放在同一个目录,用alchemy编译,命令如下:

alc-on;g++ main.cpp –O3 –Wall –swc –o main.swc;alc-off

7.  flex builder中调用,如下:

import cmodule.awu.CLibInit;

import flash.utils.ByteArray;

public    static    const _lib_init:cmodule.main.CLibInit =new cmodule.main.CLibInit();

public    static   const cModuleApi:* = _lib_init.init();

public    static    function getEaacHeader():ByteArray {

        return cModuleApi.getEaacHeader();

}

PS:初写文章,文笔生涩之处,各位请见谅,若有疑问或者交流的,可加本人YY号:301558660

转载请注明出处:山水间博客,http://blog.csdn.net/linyanwen99/article/details/7466128

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐