2012-03-26 13 views
0
//--------------------------------------------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.いくつかの要素をリストにプッシュバックすると、実行できますが、サイズは間違っています!

誰でも助けてくれますか?ありがとう!

答えて

1

スタティック初期化子are broken in Alchemy。この問題を回避するには、main()でリストを構築する必要があります。例えば、

list<float> vf; 

list<float> *vf; 

になり、自分のメインにあなたがそれを作成する必要があります。

vf= new list<float>(); 

とあなたのgetSizeメソッドが

int num = vf->size(); 
+0

を返しますそれはOKです! !ありがとう! – lightboat

+0

@ライトボート私の答えはあなたのために働いて以来、それを受け入れる気になりますか? – paleozogt

+0

もちろん、そうではありません! – lightboat

関連する問題