//--------------------------------------------test.cpp
// g++ test.cpp -O3 -Wall -swc -o test.swc
#include <iostream>
#include <list>
#include <vector>
#include "AS3.h"
using namespace std;
//vector<float> vf;
list<float> vf;
static AS3_Val getSize(void* self, AS3_Val args)
{
int num = vf.size();
return AS3_Int(num);
}
int main()
{
AS3_Val getSizeMethod = AS3_Function( NULL, getSize);
AS3_Val result = AS3_Object( "getSize:AS3ValType", getSizeMethod);
AS3_Release( getSizeMethod );
AS3_LibInit( result );
return 0;
}
//-------------------------------------------------test.as
// C:\alchemy\flex4\bin\mxmlc -library-path+=./test.swc -static-link-runtime-shared-libraries=true test.as
package{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldType;
import cmodule.test.CLibInit
public class test extends Sprite{
public function test() {
var info:TextField = new TextField();
this.addChild(info);
var loader:CLibInit = new CLibInit();
var lib:Object = loader.init();
info.appendText("size:" + lib.getSize() + "\n");
}
}
}
-------------------------------------问题--------- ---------
1.test.swf无法运行,但如果我使用矢量,那就没问题了! 2.如果我将一些元素推回到列表中,它可以运行,但我得到的大小是错误的!
任何人都可以帮助我!感谢!!!
答案 0 :(得分:1)
静态初始值设定项are broken in Alchemy。要解决此问题,您需要在main()中构建列表。例如,
list<float> vf;
变为
list<float> *vf;
在您的主要内容中,您需要创建它:
vf= new list<float>();
并且您的getSize方法将返回
int num = vf->size();