通过前面的例子,我们已经可以用C++生成SWF,并且,也学会了如何用C++和AS3交互,以及创建一个可以循环的程序。
但是,如果C++和AS3的结合开发是如此痛苦的话,那我觉得FlasCC就没有存在的意义了。 还好,看到了这个例子。
这个例子是向大家展示如何利用FLASCC生成SWC,以供AS3代码调用的。 这个机制真的很强大,当一个AS3在使用一个用FLASCC生成的SWC时,它是完全感觉不到这个SWC是用C++代码,通过FLASCC生成的。
这个例子使用了一个MurmurHash的哈希函数的实现,来展示SWC的生成。 即这个例子将MurmurHash包装成了AS3类,并打包成AS3,供大家使用。
打开它的头文件,你可以发现3个函数。 当然,就算是有300个函数,也无所谓,因为具体的C++代码是什么,不是我们关注的重点,哪怕只是一个函数里面写了一个printf,我们也可以继续这个例子。
嗯,要特别注意一下那个叫 as3api.cpp的家伙。 这个文件就展示了如何使用FlasCC提供的as3sig语法来控制C/C++函数。这种语法提供了一个非常好的方式来书写AS3和C/C++代码库。它能够进行一些必要的类型转换。
嘿嘿,你肯定想说,哇靠,居然不能自己生成。 其实,是可以的,不过要下一个例子才会教。
比较特别的是,这个例子不但用了GCC,还用了FLEX编译器。
//使用C++编译为SWC 注:-jvmopt=-Xmx1G 是我加上的,因为编译的时候,有提示我错误。
"$(FLASCC)/usr/bin/g++" $(BASE_CFLAGS) -O4 -jvmopt=-Xmx1G MurmurHash3.cpp as3api.cpp main.cpp -emit-swc=sample.MurmurHash -o MurmurHash.swc
//使用mxmlc生成SWF
"$(FLEX)/bin/mxmlc" -static-link-runtime-shared-libraries -compiler.omit-trace-statements=false -library-path=MurmurHash.swc -debug=false swcdemo.as -o swcdemo.swf
剩下的,就是上图了