PDA

Просмотр полной версии : Презентация на двух языках


xcube
18.11.2014, 13:33
Даже не знаю как правильно спросить, лучше опишу ситуацию.

Есть две презентации на разных языках, каждая из них лежит в отдельной своей папке (то что ниже пунктирной линии rus и eng).
http://cgeye.ru/!Monosnap/2014-11-18_12.08.46.png

То есть презентации работают сами по себе, по отдельности, все пути в презентациях относительные (пример "12_about/ru/12_bil.swf, 0")
В папке "rus" есть главный стартовый файл rus.swf и в папке "eng" есть свой стартовый файл eng.swf. По отдельности презентации прекрасно работают.

Но возникла задача, добавить стартовую страницу с выбором языка(см. рис. выше пунктирной линии). И тут загвоздка, если загрузить русскую или английскую версию таким способом
on (release) {
loadMovieNum("rus/rus.swf", 0);
}
то все страницы лежащие в подпапках "data files" становятся недоступными.
Вот и вопрос, можно ли каким то способом создать эту стартовую страницу не перписывая все пути в презентации?
Или можно ли как то изменить относительный путь проекта после его запуска?

dark256
18.11.2014, 14:02
1. Сделайте стартовую на обычном HTML с текстом и двумя кнопками.
Тогда запуск нужной СВФ-ки произведите как обращение к обычному URL-у

2. Сделайте обычную флэшку, с 2мя кнопками, но не ГРУЗИТЕ презентацию внутри неё, а обращайтесь к ней также по УРЛ-у.

BTN.onRelease = function(){
getURL("rus\\rus.swf","_blank")
}

Правда при этом презентация откроется в браузере. Хотя какая разница?

xcube
18.11.2014, 14:11
dark256 презентация полноэкранная, запускается через *.exe, заказчик точно не захочет браузерную версию.
Может есть какие нибудь сторонние способы изменять относительный путь после запуска приложения?

dark256
18.11.2014, 14:21
Не видя кода, что-то со всей определеностью сказать крайне сложно........
С точки зрения банальной эрудиции, могу лишь высказать предположение, (и надежду) что презентация тащит в себя файлы через MovieClipLoader().
В этом случае можно попробовать переопределить его метод loadClip() с тем, чтобы он модифицировал путь зарузки в указанном направлении....

Правда тут я в ООП шарю крайне мало, и код привести не могу...

xcube
18.11.2014, 14:34
Для загрузки роликов в презентации везде используется метод loadMovieNum, вот пример:
on (release) {
loadMovieNum("12_bibleyskie/ru/12_bil.swf", 0);
}
Если флеш позволяет изменять методы, то думаю метод loadMovieNum() тоже можно переопределить, но в этом я тоже не силен (

Кстати покопался в поиске нашел некий атрибут base, насколько понял в этой переменной как раз храниться относительный путь. Но в примерах значение этого атрибута задается в файлах html. Интересно можно ли как то это сделать из самого Flash?

dark256
18.11.2014, 15:57
Пройдитесь по коду презентации и сделайте SearchAndReplace для
" loadMovieNum(" "
на
" loadMovieNum(" rus/ "

Как-то более ничего внятного в голову не приходит.

xcube
18.11.2014, 17:36
dark256 спасибо что помогаете! да долго придется менять ссылки, там около 3 000 файлов ...

dark256
18.11.2014, 21:36
ЧТО???? У презентации не ОДИН управляющий файл, который все в себя грузит и показывает???
А 3000 СВФ-ок с подгрузками?????

xcube
19.11.2014, 00:29
Как понять одни управляющий файл который все в себя грузит?
В презентации сть стартовый файл, который при нажатии кнопок загружает в себя свфки(разделы, картинки итд) и выгружает ненужные или замещает.

dark256
19.11.2014, 12:19
Ну вот в нем и переписывать пути, а не во всех прочих СВФ

xcube
19.11.2014, 23:38
Ну вот в нем и переписывать пути, а не во всех прочих СВФ

не все так просто, в подгружаемых роликах-разделах много кнопок, в каждом разделе есть подразделы, в подразделах, много картинок которые подгружаются при клике

silin
20.11.2014, 22:43
Если флеш позволяет изменять методы, то думаю метод loadMovieNum() тоже можно переопределить,
многие методы можно переопределить, но loadMovieNum это внутренняя функция плеера, до не не добраться

Кстати покопался в поиске нашел некий атрибут base, насколько понял в этой переменной как раз храниться относительный путь. Но в примерах значение этого атрибута задается в файлах html. Интересно можно ли как то это сделать из самого Flash?
из самой флешки нельзя, но можно 'попросить' (FSCommand) контейнер, что бы тот изменил
т.е. на кнопке загрузки языковой версии кроме getURL("rus\\rus.swf","_blank") будет еще, например
FSCommand("base","rus\\");
по которой контейнер должен будет поменять параметр Base флеш-компонента, раз уж у вас все равно exe-шник..

xcube
20.11.2014, 23:28
silin, большое спасибо!

silin
20.11.2014, 23:36
в аттаче вариант как это примерно можно обустроить на C#
результат в папке bin
main.swf грзит тестовые флешки из /ru и /en, котрые грузят картинку (естетвенно из стартовой директории)
а она же, завернутая в exe-шник(flashViewer.exe), который меняет Base по FSCommand, грузит уже из 'своих' папок

xcube
24.11.2014, 13:37
silin - супер, спасибо! очень интересный подход! А при помощи какой программы заворачивали main.swf в flashViewer.exe?
Я немного знаю C# но не представляю как такое можно сделать.

silin
24.11.2014, 14:40
>> при помощи какой программы
да с помощью любой, которая позволит скомпилить, думаю можно
в моем примере проект из-под под Visual C# 2008 express edition