我有一个连接到 Flash Professional CS5 FLA 的 Flash Builder 4 项目。我不使用 MXML,所有代码都直接在 Flash Builder 中处理。(Flash 本身仅用于库,对于我们的艺术家来说更容易使用)
一切都顺利进行,一切都是从嵌入 SWF 的站点动态生成的 XML 运行的。但到目前为止,我已经在 actionscript 中硬编码了 XML 路径。我只是希望不要这样做。
我已经遵循了至少 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>
继承人的动作(这是我的文档类,第一件事)
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 个小时试图让它发挥作用,坦率地说,我正在脱发并为此睡觉。