2012-03-26 2 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"); 
     } 
    } 
} 

------------------------------------- Frage ------------------Alchemie kann die Größe der Liste nicht erreichen

1.test.swf kann nicht ausgeführt werden, aber wenn ich Vektor verwende, ist es in Ordnung!
2. Wenn ich einige Elemente in die Liste zurückdränge, kann es laufen, aber die Größe, die ich bekomme, ist falsch!

Kann mir jemand helfen! Vielen Dank!!!

Antwort

1

Statische Initiatoren are broken in Alchemy. Um dies zu umgehen, müssen Sie Ihre Liste in main() aufbauen. Zum Beispiel

list<float> vf; 

wird

list<float> *vf; 

und in der Haupt müssen Sie es erstellen:

vf= new list<float>(); 

und Ihre getSize Methode zurückkehren würde

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

Es ist OK! ! Vielen Dank! – lightboat

+0

@lightboat, da meine Antwort für Sie arbeitete, würde es Ihnen etwas ausmachen, es anzunehmen? – paleozogt

+0

Natürlich nicht !! – lightboat

Verwandte Themen