Как я могу изменить язык динамического текста в SWF с помощью flashvars? - PullRequest
0 голосов
/ 07 мая 2010

У меня есть SWF с текстом, встроенным из внешнего файла .txt. Есть ли способ, которым я могу использовать другой файл в качестве источника текста через код встраивания (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 каждый раз. Заранее всем спасибо!

Файлы для этого вопроса доступны здесь ...

1 Ответ

0 голосов
/ 08 мая 2010

Я не уверен, спрашиваете ли вы, как получить доступ к 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)
}

== Редактировать ==

Вам необходимо добавить прослушиватель событий, который будет срабатывать после завершения загрузки. Я отредактировал свой псевдокод выше в качестве примера ...

...