У меня есть проект Flash Builder 4, подключенный к Flash Professional CS5 FLA. Я НЕ использую MXML, и весь код обрабатывается непосредственно в Flash Builder. (Сам Flash используется просто для библиотеки, и ее проще использовать для наших художников)Flash Builder 4 + Flash Professional + FlashVars! = РАБОТА
Все идет без сучка и задоринки, все исходит из динамически генерируемого XML с сайта, на который встроен SWF. Но до сих пор у меня был XML-путь, закодированный в ActionScript. Я просто не хочу этого делать.
Я следил за минимальными 45 учебными пособиями по поводу получения FlashVars в FB4/As3, и совсем просто ничего не работает. Старая школа < embed> метод, используя метод < object> и даже используя метод swfObject, просто я не могу получить доступ к этим свойствам flashvar.
вот HTML, что я в настоящее время есть сейчас:
<script>
var flashvars = {
xml: "/mapsystem/xml"
}; // yes that is definitely the correct path, its the same value as when it was hardcoded
$(function() {
swfobject.embedSWF("/flash/map.swf", "map", "960", "885", "10.0.0", "expressInstall.swf", flashvars);
});
</script>
<div id="map">
swfObject Aint Working
</div>
Heres в ActionScript (это в моем классе документа, первая вещь)
package
{
import flash.display.LoaderInfo;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import src.GlobalStage;
import src.Map;
import src.Styles;
public class map extends GlobalStage
{
public var xmlDoc = "map.xml";
public function map()
{
var test:TextField = new TextField();
test.x = 50;
test.y = 50;
test.autoSize = TextFieldAutoSize.LEFT;
test.text = "XML Doc: ";
this.addChild(test);
var test2:TextField = new TextField();
test2.x = 50;
test2.y = 80;
test2.multiline = true;
test2.border = true;
test2.autoSize = TextFieldAutoSize.LEFT;
test2.text = "Parameters: \n";
test2.appendText("Total Parameters: ");
this.addChild(test2);
var _params:Object;
if (this.loaderInfo.parameters.length != null) {
_params = this.loaderInfo.parameters;
} else {
// run alt code to init
}
for(var pItem:String in _params) {
test2.appendText("Name: " + pItem + " :: " + _params[pItem] + "\n");
}
if(_params['xml'] != null) xmlDoc = _params['xml'];
test.appendText(xmlDoc);
var map:Map = new Map(xmlDoc);
Теперь, когда я запускаю это на мой местный тест, ничего не отображается, как ожидалось, но когда дело доходит до того, что на самом сайте, с переданным flashvar, xmlDoc остается «map.xml», мой счетчик сообщает мне, что есть 0 параметров, и, конечно, ничего не появляется в мой список параметров.
Я потратил 8 часов, пытаясь заставить это работать, откровенно говоря, я теряю волосы и сплю над этим.
Является ли GlobalStage вашим основным классом документов? Попробуйте использовать 'root.loaderInfo.parameters' вместо' this'. – weltraumpirat