PDA

Просмотр полной версии : Не русифицируется SWf при загрузке через XML


AlexMakienko
23.12.2010, 14:22
Братцы!
Непосредственно редактирую SWF сайт и он легко русифицируется.
Разобрался и с русификацией почтовых форм (через embed устанавливаю нужные глифты)
и вроде все о кей.

Но вот в случае, когда контент swf файла формируется через редакцию приданного XML файла
возникли трудности с русификацией. Сначала конечно русифицировал Dreamweaver, но
текст набранный по русски в XML файле в swf файле или не появляется (пропадает) или выписывается
набор знаков вопроса ?????

udaaff
23.12.2010, 15:36
xml файл должен быть сохранен в utf-8.

dark256
23.12.2010, 16:49
ну или попробуйте во флэшку вставить строчку

System.useCodepage = true

НО! Это для ленивых, крайне не рекомендуется и проблему следует решать в общем случае, через UTF8

AlexMakienko
23.12.2010, 22:35
udaaff, dark256 Спасибо за участие.
При русификации Dreamweaver МХ я ставил на первое место в encoding строчку для windows 1251.
Другими словами надо первой ставить строчку для UTF-8 ?
Вообще то в самом XML файле в первых строках стоит заказ на UTF-8 но видимо этого мало.
Попробую отпишу. Еще раз спасибо.

udaaff
23.12.2010, 22:56
Строчка нужна эта только для порядка, flash её не анализирует.
xml файл должен быть сохранен в utf-8.

etc
23.12.2010, 22:59
AlexMakienko, послушайте, вы написали на заборе известное слово из трех букв, но там по-прежнему дрова. Чувствуете разницу? От того, что вы в начале документа написали, что он в кодировке utf-8, он таковым не стал. Тоже самое будет, если расширение bmp-файла сменить на jpg. Жипегом он от этого не станет, поэтому вам нужно пересохранить файл в нужной кодировке, помимо заголовка. Хотя бы в блокноте.

dark256
24.12.2010, 00:41
Мне тоже всегда было интересно - к чему там в заголовке ХМЛ-я так жизнерадостно указана кодировка.

AlexMakienko, тот текстовый редактор, в котором вы пишете свою ХМЛ, имеет кнопку FILE-SAVE_AS , так вот после нажатия SAVEAS должна быть опция, в какой именно кодировке сохранять. Соотв. кодировка не в заголовке текста, а у самих символов текста другой код :)

AlexMakienko
24.12.2010, 15:48
Братцы все логично и правильно !
dark256 в окне file- save as только установка типа файла (html, xml и др.).
Кодировок я что- то там не нашел!

У меня Dreamweaver MX 2004. Я его русифицировал и, согласно рекомендаций, сделал следующее:
1. В меню Edit --Preferences--New document активировал строчку кириллица
2. Там же в опции Fonts тоже установил кириллица

Потом как рекоменовано зашел в Progr Files- в папку Dreamweaver в нем в Configuration - Encoding
И там в файле EncodingMenu.xml поставил самыми первыми три файла относящиеся к Wind1251

<mm:encoding name="Cyrillic (Windows-1251)" charset="windows-1251"
fontgroup="Cyrillic" winfontcharset=204 macfontscript=7
filename="Winl251.xml"/>

Первыми были для Cyrillic (ISO-8859-5)

После этого при наборе русского текста в XML он Dreamweaver его сохраняет и видит
(попробую конечно через notepad++ и bloknoot).

В самом swf файле-сайте ,там где есть и редактируются текстовые поля, зашел по клавише embed
и установил первую строчку все глифты (Glifts).
Раньше безотказно помогало в том числе и при создании почтовых форм.
Не получается ! Там где в xml русский текст и в поле и на меню дает в Swf пустоту или знаки ????

Но вот, что только что обнаружил в своем Dreamweaver MX 2004 в папках задания кодировок
в Progr Files- в папке Dreamweaver и далее в Configuration - Encoding нет файла UTF-8.xml
Файлы кодировок Win1251.xml iso8859.xml KOI8R.xml и др. есть, а UTF-8.xml нет.
Надеюсь что из-за этого. Чуть позже дома загоню UTF-8.xml попробую и отпишу
В крайнем случае придется ставить русифицированный Dreamweaver 8.

etc
24.12.2010, 15:55
AlexMakienko, выбросьте Dreamweaver и возьмите обычный блокнот, в кои-то веки.

dark256
24.12.2010, 16:13
Ужас. Дримвивер не выбрасывайте. Просто закройте. Скачайте и откройте EditPlus.
Хотя можно и в блокноте. Вкладка сэйвЭс выглядит также :)

AlexMakienko
24.12.2010, 16:42
etc использовал блокнот и сохранил xml в UTF-8 но пока не помогло
Думаю надо нормально внедрить UTF-8 в исходник FLA
Займусь этим дома. Уж очень нравится flash образец TM 24176
dark256 Обязательно попробую EditPlus. Спасибо
Да и прописку System.useCodepage = true во FLA
Когда то для почтовых форм очень помогло

AlexMakienko
07.01.2011, 00:39
Братцы поздравляю Всех с Праздником Рождества Христова !

udaaf , etc и dark256
Решил снова обратиться к Вам за помощью и советом.

1. Main.xml файл, загружающий текст в swf сайт запоминаю в utf-8 через Блокнот.
И он нормально отображает кириллицу после нового открытия.
Для надеги проверил это также в русифицированном Dreamweaver 8 (теперь кодирует в UTF-8).
Попробовал -- исходный swf по прежнему не вкачивает русский текст и дает пустые места !

2. Тогда в самом исходном FLA СТАТИЧЕСКИЕ тексты (в том числе, которые на клавишах)
перевел на Time NewRroman cyr для проверки на русификацию этого фанта -- нормально проявляются.
Но те которые подгружаются из файла main.xml по прежнему не видны.

3. Учитывая, что в sprite (не в кадрах основного Time line ! ), который загружает тексты из main.xml файла, в слое action этого Sprite на 6 кадрах ( 6 страниц в SWF сайте) коды следующие:

_root.getCurrentText(thisText0, 0);
_root.getCurrentText(thisText1, 1);
_root.getCurrentText(thisText2, 2);
_root.getCurrentText(thisText3, 3);
_root.getCurrentText(thisText4, 4);
_root.getCurrentText(thisText5, 5);
_root.getCurrentText(thisText6, 6);
_root.getCurrentText(thisText7, 7);
_root.getCurrentText(thisText8, 8);
_root.getCurrentText(thisText9, 9);
_root.getCurrentText(thisText10, 10);
_root.getCurrentText(thisText11, 11);

var format1 = new TextFormat();
format1.letterSpacing = -2;
var format2 = new TextFormat();
format2.letterSpacing = -1;

thisText0.setTextFormat(0, 10000, format1);
thisText1.setTextFormat(0, 10000, format2);
thisText2.setTextFormat(0, 10000, format2);
thisText3.setTextFormat(0, 10000, format2);
thisText4.setTextFormat(0, 10000, format1);
thisText5.setTextFormat(0, 10000, format2);
thisText6.setTextFormat(0, 10000, format2);
thisText7.setTextFormat(0, 10000, format2);
thisText8.setTextFormat(0, 10000, format2);
thisText9.setTextFormat(0, 10000, format2);
thisText10.setTextFormat(0, 10000, format2);

пробовал заказать в Lybrary Фанты (new fonts) в качестве format1 и format2
Time NewRroman cyr не помогло.

Вставка System.useCodepage = true; в эти кадры тоже не помогла.

Наверное надо заменить выше стоящие команды в этих кадрах:

var format1 = new TextFormat();
format1.letterSpacing = -2;
var format2 = new TextFormat();

или завести заказ Time NewRroman Сyr как то по другому. Не знаю как.
Может ли кто либо подсказать как поступить далее ?

dark256
07.01.2011, 01:15
создайте вручную текстовый блок. динамический. ARIAL.
Embedd туда весь английский алфавит, цифры знаки и Cirillyc.

Все как в примере. И грузите туда ( строчка закомментирована ) СВОЙ русский текст из ХМЛ-я.
Чтобы сразу определиться что именно у вас глючит - ембеддинг фонтов, ХМЛ-и, кодировки, форматы, синтаксис или еще что.

То есть в данном случае - у нас есть ХМЛ и есть текстовые блоки. Ничего лишнего промежуточного, где возможны ошибки.

AlexMakienko
07.01.2011, 01:50
dark256 Спасибо за быстрый ответ. У Вас наверное AS3 ?
Твой Checkrus.fla в моем Macromedia Flash 8 не открывается -- дает unexpected file

dark256
07.01.2011, 02:01
У меня, в полном соответствии с правилами раздела - АС2. АС3 я вобще не знаю. У меня CS3 :)
Поставьте его уж что-ли.... Не так уж сложно. Отличий минимум, но вкусностей там очень много, по сравнению с ЦС4 и ЦС5 :) Я конечно тоже крайне консервативен, но не до такой же степени :)

AlexMakienko
07.01.2011, 02:18
dark256 Вообще Вы конечно правы.
Давно собирался перейти на Adobe Flash CS3 (кажется так) да руки не доходили.
Вообщем попробую (уже днем) с текстовым блоком как вы рекомендовали
и поставлю СS3. Потом отпишу.
Еще раз с Праздником и с победой наших юниров в Канаде
(молодцы отомстили за стариков по полной !)

Добавлено через 49 минут
dark256 Последний CheckRus8 открылся отлично !

Создал как рекомендовано текстовый блок -динамический. ARIAL.
Embedd туда весь английский алфавит, цифры знаки и Cirillyc.
Все шикарно вывелось в SWF файле.
Я так понимаю мы проверили работу моего Macromedia Falsh8.

Но ведь для загрузки текста из main.xml файла надо в этот Fla завести команды,
приведенные мной выше? И не только.

dark256
07.01.2011, 13:05
Так. Стоп. Делать ничего было не надо. Там был готовый код, выводящий текст с русскими буквами.
Только вы генерили текстовые поля программно, а я выводил рисованые ручками клипы, с текстовым блоком внутри. Соответственно, если ваш ХМЛ в эти блоки выводится по-русски, то проблема не в ХМЛ и кодировках, а просто в генерации вами текстовых полей.

Соотвественно замените все ваши форматы, на вывод моего текстового блока. и пихайте туда текст.

AlexMakienko
08.01.2011, 18:11
dark256 Если ничего делать не надо, то:
У Вас запрограммирован вывод в цикле от 0 до 4 "Русский текст". Он нормально в цикле и выводится. Русский текст +0
Русский текст+1 и т.д.

Кроме того, на сцену можно опустить Textblok movie clip.
Набрал в нем свой русский текст и он тоже нормально выводится.

Подскажите пожалуйста поподробнее каким образом внешний XML загрузится в Ваш текстовой блок ?
Мой main.xml многоуровневое программое меню

Соотвественно замените все ваши форматы, на вывод моего текстового блока. и пихайте туда текст.

Честно говоря не понял
Может лучше полностью посмотреть исходные дела

В файле main.xml уже заменил в Заголовке сайта ряд слов по Русскому ( например Aero Морские )
и сохранил этот xml в UTF-8 . Можно видеть что Руские слова изчезают( или не видны)

dark256
08.01.2011, 21:51
в мой файл ничего внешнего не грузится. просто сделайте вывод вашей информации из ХМЛ-я подобным образом. как у меня в примере.

AlexMakienko
08.01.2011, 22:12
dark256 Спасибо, попробую чуть попозже и напишу.

P.S. Нашел отличный урок о русификации FlashDen XML в виде AVI фильма
(об авторе есть внутри фильма). Классно и конкретно.
http://*****************/files/egihyq6wf

Модераторам конечно виднее. Но мне кажется это надо в уроки

P.S.
Братцы Ну вообщем все супер! Русифицировал 5-ти стр. сайт практически за 2 часа.
Дольше потом поэтапно подбирал качество и размер заведенных шрифтов, чтобы сайт смотрелся отлично.

Вообщем правы конечно модераторы udaaff , etc надо:

1 Все XML файлы редактировать и (чтобы не было написано в его первой строке)
запоминать через блокнот или Notepad++ в формате UTF-8,

2. Проверить какие Фанты русифицированы ( у меня оказались только Arial, Time New Roman-ы,
да standard 07_54.

3. Скрупулезно во всех swf файлах отрывать в Lybrary Text файлы, искать текстовые поля везде, где они есть. Выделять их ( и просматривая все слои на Time line) назначать русифицированные фанты и их размеры. При этом -- для динамических и Input текстов --обязательно заходить в EMBED, отмечать строчку Cyrillick (499 glyphs) и самое главное перед выходом из Embed
!! не забывать нажимать Ctrl + Enter !!!

Реально испытал недостаток в красивых Русифиц. шрифтах.
Наилучшим оказался standard 07_54. Он от 9-11 размера довольно четко смотрится на русском.
Time New Roman-ы меньше 10-го размера сотрится не четко. Пришлось увеличивать до 12-13 размера

Нашел правда русифицированные (Open Type) Myriad Pro Black ( bold и Italic), Tachoma bold и Vernada.
Ну они чего то не очень нравятся. Вообщем, если кто поможет с красивыми русифицированными типа Algierian или Castellar, Imprint MT Sahdow был бы благодарен.
Спасибо также dark256 и всем кто помогал .
Ну вот вообщем вроде и все.
:victory: :yahoo:

AlexMakienko
11.01.2011, 22:34
Друзья доброго времени суток ! Не могу разобраться.
После русификации все работает отлично кроме перехода в режим Full Screen .
Хотя коды на управляющем мувике (Sprite) остались те же самые что и в Англ варианте:

on (rollOver)
{
this.gotoAndPlay("s1");
}
on (releaseOutside, rollOut)
{
this.gotoAndPlay("s2");
}



Внутри этого мувика подсоединен через Swap мувик ( без команд), а под ним уже text файл FullScreen. Открыл оба исходника одновременно. Все досконально по связям проверил
Аглицкий переходит в полноэкранный , а русс. ну ни как !
Вроде ситуация до смешного простейшая . Но уже шарики за ролики кажется заехали.
Выдается ошибка :
**Error** Symbol=sprite fullscreen, layer=Layer 1, frame=1:Line 1: Mouse events are permitted only for button instances
* ** on (rollOver)

**Error** Symbol=sprite fullscreen, layer=Layer 1, frame=1:Line 5: Mouse events are permitted only for button instances
* ** on (releaseOutside, rollOut)
Пробовал через кнопку on (release) .... Но видимо ошибаюсь с командами
Братцы подскажите как правильно должно быть на мувике. Под рукой нет книжек.

rainbowrussia
12.01.2011, 02:13
Это что за звездочки в коде?
ps. Сейчас накажут за Sprite 171, Sprite 170... :)

AlexMakienko
12.01.2011, 03:33
rainbowrussia Звездочек вообще то в кодах нет. Они появились при печати здесь почему то???
А № sprite просто печатается внутри ошибок . Я решил их привести. Может это что нибудь прояснит?
Или номер Sprite от моего неизвестного исходника это секрет ?

rainbowrussia
12.01.2011, 08:41
Удалите полностью этот код и наберите его заново не копируя. Откуда-то эти звездочки взялись, а быть их не должно. Но дело, видимо, не в этом. Проверьте, этот код должен быть на "спрайте", а не в кадре.
А про номера спрайтов... я имел в виду что декомпиляция на этом форуме вне закона.

AlexMakienko
12.01.2011, 13:52
rainbowrussia Спасибо проверю.
У меня вообще то исходник, который я скачал как free с общеизвестного большого базового сайта.

P.S. rainbowrussia и всем еще раз Спасибо. Проблему решил!
Переделал сам муви клип, да и коды аккуратненько (не копируя) набирал.

on (rollOver)
{
this.gotoAndPlay("s1");
}
on (releaseOutside, rollOut)
{
this.gotoAndPlay("s2");
}
С третьего разика получил нужный swf файл и полноэкранный режим на html заработал.

Но вот, что интересно! После первой генерации с исходника на моем Macromedia 8 все о.кей, а при повторной генерации и следующих попыток эти команды портятся. И именно только эти.
Пробовал сначала запомнить измененный исходник. Потом генерировать. Первый раз О.кей потом все тоже самое.
Похоже надо переустанавливать программу или переходить на Adobe Flash CS3 или CS4.
Что посоветуете ?

rainbowrussia
13.01.2011, 12:54
Что посоветуете ?
Боюсь что эта проблема порождена декомпилером.
Был у меня опыт правки подобного файла - там координаты и размеры линии зашкаливали, если только к ней "прикоснуться".
Я не знаю откуда точно вы его скачали, но уверен на 99% что это результат декомпиляции комерческого шаблона (даже подозреваю чьего). На это указывают имена клипов вида "Sprite NNN", метки "s1", "s2". Если порыться в коде, наверняка и _loc1, _loc2 отыщутся.
Можно попробовать и переустановить, но не уверен что поможет. Разве что версию сменить.

AlexMakienko
13.01.2011, 18:47
rainbowrussia Спасибо за ответ.
Может быть его и декомпильнули до выкладки. Не знаю. У меня декомпилятора нет.
Указанных Sprites там тоже нет, а метки s1 и s2 есть практически в каждом исходнике.
Думаю надо установить модель Adobe Flash CS3. Буду искать