2009-04-20 4 views
2

Ich habe Probleme beim Abrufen von Symbolen aus dem Ressourcenpaket in Flex. Hier ist das Szenario:Problem beim Herausziehen von Symbolen aus dem Ressourcenpaket in Flex

Verzeichnisstruktur sieht wie folgt aus:

-ResourceManagerTest 
    -resources 
    -icons 
     -icon1.png 
     -icon2.png 
     -icons.properties 
-src 
    -MyButton.as 
    -ResourceManagerTest.mxml 

In icons.properties ich habe:

CIRCLE_FILLED=Embed("icon1.png") 
CIRCLE_CONTOUR=Embed("icon2.png") 

Ich möchte ToggleButtonBar mit Schaltflächen, deren Symbole erstellen sind, herausgezogen aus Ressourcenbündel.

Hier ist die Quelle programmatisch erstellt Schaltfläche:

package 
{ 
    import mx.resources.ResourceManager; 

    public class MyButton extends Object 
    { 
    public var icon:Class; 
    public function MyButton() 
    { 
     super(); 
     icon = ResourceManager.getInstance().getClass("icons", "CIRCLE_FILLED"); 
    } 

} 

}

Und hier ist ResourceManagerTest, wo ich die ToggleButtonBar definieren:

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="absolute" 
creationComplete="onCreationComplete()"> 

<mx:Script> 
    <![CDATA[ 
     [Bindable] 
     public var dataProvider:Array; 

     public function onCreationComplete():void { 

      dataProvider = new Array(); 
      dataProvider.push(new MyButton()); 
      dataProvider.push(new MyButton()); 
      tgb.dataProvider = dataProvider; 
     } 

    ]]> 
</mx:Script> 


<mx:ToggleButtonBar id="tgb"/> 

Buttons erscheinen, jedoch ohne Symbole. Was mache ich falsch?

Antwort

1

Zunächst sieht es so aus, als würden Sie das Ressourcenpaket in Ihrem Build nicht einschließen. Du wirst wahrscheinlich so etwas wie

<mx:Metadata> 
     [ResourceBundle("RegistrationForm")] 
</mx:Metadata> 

im MXML müssen oder einfach nur

[ResourceBundle("RegistrationForm")] 

an der Spitze der Klasse

Sobald Sie getan haben, die sicherstellen, dass Sie das Bündel haben ... versuche, nur eine String-Ressource hinzuzufügen und zu sehen, ob du das bekommen kannst. Wenn du das Bundle hast und es immernoch nicht funktioniert hab ein Spiel mit verschiedenen Pfaden für dich Icons. Sie sind möglicherweise nicht relativ zur Ressource (ohne dass ich damit spiele, kann ich mich nie daran erinnern, was relativ zu was ist).

+0

Wenn Sie die Antwort mögen, sollten Sie upvote und wenn es das Problem löst, sollten Sie es als richtig markieren. –

+0

Der Pfad muss relativ zur Eigenschaftendatei sein. – Janosch

1

Die beste Ressource, die ich für Informationen zum Einrichten von ResourceBundle in Flex 3 gefunden habe, ist "Using Resources" in Adobe's livedocs.

Zusätzlich zum Ressourcenpaket müssen Sie sicherstellen, dass Sie den Ressourcenpfad zum Zeitpunkt der Kompilierung einschließen. Weitere Informationen finden Sie in den Adobe-Dokumenten.