2009-04-16 10 views
2

Ich arbeite gerade an einem Projekt für die Schule und wir versuchen, es so einzurichten, dass es leicht zu implementieren ist. Der Webapp-Teil davon ist komplett in Adobe Flex geschrieben.Wie lese ich aus einer Konfigurationsdatei in Flex?

Wir benötigen jedoch Links zu bestimmten Dateien/URLs innerhalb des Codes, die auf verschiedenen Rechnern unterschiedlich sind.

Zum Beispiel mein Server kann 8180 als Port verwenden, während jemand anderes nutzt 8080. Oder eine Person mit Windows so ein filepath C sein würde:/... während mein wäre/home/...

Gibt es eine Möglichkeit, diese Dateien in eine separate Konfigurationsdatei zu schreiben und sie dynamisch in den mxml-Dateien zu lesen?

Es wäre wirklich schön, wenn wir nicht für jeden einzelnen Einsatz neu kompiliert werden mussten ...

Vielen Dank im Voraus!

Antwort

0

Wenn Sie die lokale Datei-Sandbox aktiviert haben, können Sie in der Lage sein URLLoader zu verwenden, um eine lokale Datei zu lesen:

http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=05B_Security_176_04.html

jedoch SWF auch lokal sein müssen.

Wenn Sie die SWF-Datei remote laden, können Sie für eine Liste der Ressourcen eine Verbindung mit dem Ladeserver herstellen. Das dürfte in den meisten Fällen die bevorzugte Lösung sein.

0

Sie können Parameter in eine SWF-Datei übergeben, indem Sie FlashVars zum HTML hinzufügen, von dem es ausgeführt wird. FLashVars

+0

Tolle Idee, ich habe flashvars vergessen. –

1

Sie können HTTPService verwenden, um eine XML-Datei (oder eine beliebige Textdatei) zu laden, die sich an einer Position relativ zur Flex-Anwendungs-SWF befindet. Führen Sie den HTTPService einfach beim Start der Anwendung aus, parsen Sie die Datei und stellen Sie die Daten dort zur Verfügung, wo Sie sie benötigen.

0

Ich stimme stark mit brd6644 überein. Sie benötigen eine domänenübergreifende Richtliniendatei auf dem Server, auf dem sich die Konfigurationsdateien befinden. Kopieren Sie einfach den folgenden XML-Code in eine Datei mit dem Namen "crossdomain.xml" und legen Sie ihn im Server-Root des Servers ab, der Ihre Konfigurationsdateien enthält.

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy 
    SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*" /> 
</cross-domain-policy> 

Dies ist möglicherweise nicht erforderlich, wenn sich das swf auf demselben Server wie die Konfigurationsdateien befindet. Wie Sie ebenfalls sehen können, ermöglicht diese Cross-Domain-Richtlinie den Zugriff von allen Domänen aus. Wenn Sie also viel Wert auf Sicherheit legen (möglicherweise nicht wichtig für ein Schulprojekt), lesen Sie ein wenig darüber, um zu sehen, wie Sie konfigurieren. Hier ist ein gutes article

Auch hier einige Beispiele Http Code:

private function init():void{ 
    get_bands_service.url = yeswewillArtistsURL; 
    get_bands_service.method = "GET"; 
    get_bands_service.addEventListener(FaultEvent.FAULT, onServiceFault); 
    get_bands_service.requestTimeout = 20; 
    get_bands_service.send(); 
} 

<mx:HTTPService id="get_bands_service" result="parseBandsServiceResult();" useProxy="false" /> 
1

Check out appcorelib, die Dokumentation werden Sie zeigen, wie Sie eine relative URL verwenden, wie aus einem Vermögen Ordner:

loadXML("assets/xml/config.xml); 

Sie müssen sich keine Gedanken über Crossdomain machen, wenn sich die XML- und Flex-App auf demselben Server befinden.