如何使用flashvars更改SWF中动态文本的语言?

时间:2010-05-07 10:05:14

标签: flash embed translation swfobject

我有一个SWF,文本嵌入了外部.txt文件。有没有办法可以通过embedcode(swfObject)将不同的文件用作文本源,具体取决于语言?

这是我目前的动作:

myData = new LoadVars();
myData.onLoad = function() {
text_clips.project_title.text = this.projecttitle1;
};
myData.load("translatetext.txt");

var loader:MovieClipLoader = new MovieClipLoader();
loader.loadClip(_level0.projectimage1,pic1.image_holder);

这是translatetext.txt的内容:

projecttitle1=This is my translatable text

这是我正在使用的嵌入代码:

<div>
            <object width="960" height="275" id="rvFlashcontent">
<param name="movie" value="lang_test_3.swf" />
<param name="wmode" value="transparent" />
<param name="flashvars" value="projectimage1=flashimages/testimage.jpg" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="lang_test_3.swf" width="960" height="275">
<param name="wmode" value="transparent" />
<param name="flashvars" value="projectimage1=flashimages/testimage.jpg" />
<!--<![endif]-->
<h1>Alt Content</h1>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
    </div>

我想要做的是添加一个Flashvars参数来命名要加载的文件,所以我可以更改语言:

<param name="flashvars" value="projectimage1=flashimages/image.jpg&projecttext=textfrench.txt" />

到目前为止,还需要四种语言,但这种语言将会增长,因此需要足够灵活,让开发人员每次都无需获得新的SWF即可添加语言。在此先感谢所有人!

Files for this question available here...

1 个答案:

答案 0 :(得分:0)

我不确定你是否在询问如何访问flashvars或如何处理多种语言,但假设它是前者,你可以像这样获得flashvars:

protected function init():void
{
    var flashvars:Object = LoaderInfo(root.loaderInfo).parameters;
    var myDataLoader:URLLoader = new URLLoader();
    myDataLoader.addEventListener(Event.COMPLETE, onDataLoadComplete);
    myDataLoader.load(new URLRequest(flashvars.projecttext));
}

protected function onDataLoadComplete(e:Event):void
{
    var myDataLoader:URLLoader = URLLoader(e.target);
    var myData:Object = myDataLoader.data;
    // now you can do whatever you want with the contents of the file (i.e. myData)
}

==编辑==

您需要添加一个在加载完成时将触发的事件侦听器。我上面编辑了我的伪代码作为例子......