Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.12.2011, 21:42
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 1  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
The bomb! Проблема с загрузкой файлов в Locale

Пишу тут без особой надежды на помощь, тема Locale тут традиционно обходится молчанием, но попытка не пытка. Честно говоря, я ненавижу класс Locale, я постоянно натыкаюсь на грабли с этим классом, и в этот раз я наступил на очередные грабли. В общем, есть проект, разработанный во Flash CS5 и локализованный с помощью Locale. Весь интерфейс в нем отрисовывается программно, и программно подставляются строки из локали. В этом проекте стояла опция «заменять строки автоматически во время выполнения». И все работало нормально. Попробовал удаленную загрузку XML файлов таким образом:
Код AS3:
Locale.addXMLPath("en", "http://mydomen.ru/Psylab_en.xml");
Locale.addXMLPath("ru","http://mydomen.ru/Psylab_ru.xml");
Результат не понравился, эксемельник не успевает догрузиться до инициализации флешки, в итоге часть интерфейса не отрисовывается. Поэтому, решено было сменить опцию на «заменять строки вручную в соответствии с языком рабочей области», т.е. при компиляции строки должны были автоматически замениться на соответствующий язык. Сразу после этого скомпилироваться не удалось, при разных настройках, выкидываются разные ошибки, либо эта:
Error #2044: Необработанный ioError:. text=Error #2032: Ошибка потока. URL: file:///D|/.../Psylab_ru.xml
at fl.lang::Locale$/loadXML()
at fl.lang::Locale$/initialize()
at core::Psylab()
либо просто текстовые поля принимают null и я получаю чистую флешку.
Попробовал скомпилироваться в CS5.5, я так уже лечил некоторые специфические глюки. Заново импортировал эксемельники. В этой версии IDE я получаю такую ошибку:
ReferenceError: Error #1065: Переменная TCMText не определена
Пересохранение в разных версиях не помогает. Смена в Locale на другие способы локализации тоже не помогает, ошибки так и держатся. В общем, что делать не знаю, идеи иссякли.

Старый 15.12.2011, 23:57
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
И все работало нормально
Вот не понял, в чем изменилась ситуация, что работать перестало
Откуда Вы раньше xml брали, если не загружали


Последний раз редактировалось expl; 16.12.2011 в 00:04.
Старый 16.12.2011, 00:32
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 3  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Раньше грузил так:
Код AS3:
Locale.addXMLPath("en", "lng/Psylab_en.xml");
Locale.addXMLPath("ru","lng/Psylab_ru.xml");
т.е. локально, и все работало нормально. Назад с удаленной загрузки изменить на локальную уже не удается.

Старый 16.12.2011, 00:45
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 4  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
откройте справку по Locale, там все подробно и с примерами.
__________________
местонахождение

Старый 16.12.2011, 01:00
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 5  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
открывал много раз, прочитал до дыр и до каждой запятой в синтаксисе

Старый 16.12.2011, 01:14
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 6  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
ну по двум строчкам кода, который Вы привели определить из-за чего, что-то там у Вас не работает не реально!
__________________
местонахождение

Старый 16.12.2011, 01:29
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 7  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Ну к локале в проекте не много кода относится:
в конструкторе класса документа прописано:
Код AS3:
Locale.addXMLPath("en", "lng/Psylab_en.xml");
Locale.addXMLPath("ru","lng/Psylab_ru.xml");
Locale.initialize ();
а сами строки грузятся примерно так:
Код AS3:
emotion = new Moduli_menu_btn (Locale.loadString ("IDS_EMOTION"));
Это пример создания кнопки, у которой в коструктор передается строка из локали. Выкладывать сюда весь код из проекта я не смогу, и потом, сомневаться в нем нет причин, все работало.

Старый 16.12.2011, 02:09
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 8  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
в справке сказано, что метод:
Цитата:
loadLanguageXML(xmlLanguageCode:String, customXmlCompleteCallback:Function = null):void
[статические] Загружает XML-файл для указанного языка.
вы утверждаете:
Цитата:
а сами строки грузятся примерно так: emotion = new Moduli_menu_btn (Locale.loadString ("IDS_EMOTION"));

справка:
Цитата:
loadString(id:String):String
[статические] Возвращает строковое значение, связанное с заданным идентификатором строки, на текущем языке.
+ что мне, наверное, никогда не понять:
Цитата:
Выкладывать сюда весь код из проекта я не смогу, и потом, сомневаться в нем нет причин, все работало.
ну в чем тогда проблема, если код показать Вы не можете, да и тем более все в нем правильно?
__________________
местонахождение

Старый 16.12.2011, 02:10
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 9  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Цитата:
Сообщение от PainKiller Посмотреть сообщение

Locale.addXMLPath("en", "http://mydomen.ru/Psylab_en.xml");

...
Error #2044: Необработанный ioError:. text=Error #2032: Ошибка потока. URL: file:///D|/.../Psylab_ru.xml
Что-то тут не чисто...

Добавлено через 19 минут
И да, если что-то не успевает догрузиться, используйте метод Locale.setLoadCallBack(callback) .

Старый 17.12.2011, 02:08
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 10  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Цитата:
Сообщение от СлаваRa Посмотреть сообщение

+ что мне, наверное, никогда не понять:

ну в чем тогда проблема, если код показать Вы не можете, да и тем более все в нем правильно?
А собственно говоря, вывод такой, по поводу кода, делается исходя из такой логической цепочки:
1. Код работал.
2. В коде ничего не менялось кроме пути к файлам, и настроек панели Строки.
3. Код перестал работать.
=> проблема в пути к файлам и настройках панели Строки. Не можете это понять, зачем тогда тут пишите? Добавлю, что проблема может быть еще в том, что я что то не понимаю в том как работает Locale, или в баге самой Locale. Поэтому я тут тему и открыл.
Теперь следующее:
В справке про класс Locale написано так "Свойства и методы этого класса можно использовать, если требуется заменить идентификаторы строк «с помощью ActionScript при исполнении»." У меня возникло подозрение, что возможно опции "Автоматически во время выполнения" и "Вручную в соответствии с языком рабочей области" вообще предназначены только для работы в самой среде Flash а не с такой функцией:
Код AS3:
Locale.loadString ("IDS_EMOTION")
Но информации подтверждающей мои подозрения я не нашел, вообще по Locale мало примеров.
И, напоследок, насчет этой строки:
Код AS3:
loadLanguageXML(xmlLanguageCode:String, customXmlCompleteCallback:Function = null):void
У меня стояла опция "Автоматически во время выполнения", она грузит язык разово и эта строка не нужна (и у меня работало без нее). Возможно, и то, что я в конструкторе написал не нужно, но я не проверял (хотя нет - нужно, путь к xml точно брался из функции addXMLPath ()). А эта строка нужна, для смены языка по событию (например, меняем язык по выбору его из комбобокса). Я так делал и я действительно использовал такую строку. Но это отдельная история.

Добавлено через 5 минут
Цитата:
Сообщение от crazyone Посмотреть сообщение
Что-то тут не чисто...

Добавлено через 19 минут
И да, если что-то не успевает догрузиться, используйте метод Locale.setLoadCallBack(callback) .
Вот это мысль хорошая, если получится снова грузить эксемельники через http можно будет попробовать, хотя для этого в коде кое что переделать придется.


Последний раз редактировалось PainKiller; 17.12.2011 в 02:19.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:49.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.