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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.01.2011, 10:43
regman вне форума Посмотреть профиль Отправить личное сообщение для regman Найти все сообщения от regman
  № 11  
Ответить с цитированием
regman

Регистрация: Sep 2010
Сообщений: 16
Спасибо. С массивами работает все как надо, только при первой загрузке картинки в поле display отображается undefined. Никак не могу понять в каком порядке исполняется код?? Привык что сверху вниз, а тут не поймешь.

Еще вопрос насчет кодировки в XML. Как заставить флэш нормально работать с кириллицей? У меня элемент name в кириллице записан. При выводе получаются квадратики. Где-то читал, что в XML-файле для кириллицы нужно указывать кодировку юникод. Пробовал - не помогает.


Последний раз редактировалось regman; 12.01.2011 в 11:03.
Старый 12.01.2011, 11:04
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 12  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
I. Насчет undefined. Видимо вам надо увязать момент отображения первой картинки с моментом загрузки и разбора конфига. То есть отображать слайд и когда конфиг уже распарсен и когда картинка уже загрузилась.
Я обычно пишу прелоадер, который загружает конфиг и все картинки (отрисовываю их в битмапу и кладу в массив). Конечно, сперва идет загрузка конфига, чтобы получить пути для загрузки картинок, потом гружу их с помощью MovieClipLoader.
Также этот прелоадер у меня обычно следит за загрузкой всей флешки.
Когда готово всё, перехожу к кадру с основным содержанием флешки.

II. Насчет кодировки. Вообще-то флеш работает с UTF-8.
Общие рекомендации для нормальной работы с кириллицей:

1. Сохраните XML в UTF-8.
Одной записи <?xml version="1.0" encoding="UTF-8"?> в начале файла будет недостаточно. Нужно именно сохранить файл в кодировке UTF-8. Т.е. выбрать utf-8 при сохранении из текстового редактора (я, например, использую Notepad++, хотя и обычный Notepad умеет это делать).

2. Для нормального отображения в текстовых полях кириллицы часто нужно бывает внедрить шрифт.
Как внедрять шрифт, на форуме неоднократно говорилось.

Чтобы проверить, что у вас за проблема, локализуйте ее.
Например, потрейсите внутри парсера (в данном случае парсером я называю разбор данных внутри обработчика onLoad) получаемые из файла данные. Если трейс показывает нормальный кириллический текст, а в поле он не отображается, или отображается неправильно, то проблема уже не в работе с XML, а в отображении кириллицы в поле, внедрение шрифта должно помочь.

Ни в коем случае не используйте назначение свойства System.useCodepage = true.

Если уж совсем будут проблемы, стучитесь.
__________________
Идите первым!


Последний раз редактировалось mooncar; 12.01.2011 в 11:27.
Старый 12.01.2011, 11:19
regman вне форума Посмотреть профиль Отправить личное сообщение для regman Найти все сообщения от regman
  № 13  
Ответить с цитированием
regman

Регистрация: Sep 2010
Сообщений: 16
Еще раз спасибо. Действительно, мой редактор плохо сохранял в кодировке UTF-8, хотя в опциях было выставлено. Проблема с кодировкой решена.

Насчет undefined - запихнул строку отображения первого описания в саму функцию loadXML. Только вот не совсем понимаю последовательности исполнения кода программы. Стояла эта строчка вне, то есть после функции loadXML - было undefined. Тоесть, получается что сначала инициализируются/объявляются все пользовательские функции в программе, а потом уж начинается исполнение кода сверху вниз?? Или как?? В других языках программирования все на порядок в этом плане понятнее.

Описание первой картинки подтягивается из первого элемента массива, который заполняется в теле функции loadXML.


Последний раз редактировалось regman; 12.01.2011 в 11:42.
Старый 12.01.2011, 11:44
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 14  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
regman, все просто! Вы поступили верно.
Дело в том, что код AS работает асинхронно. Флеш - это в первую очередь интернет-технология и нуждается в учете полной загрузки чего-либо, того же динамического контента.
Код AS будет исполняться сам по себе мгновенно, строка за строкой, невзирая на то, что что-то не успело загрузиться, если не принять мер. А вдруг скорость соединения с файлом 1 байт /с ? Тогда данные о подписях будут получены очень не скоро.
А код последовательно выполнится практически мгновенно. И что-то может окажется undefined.
Поэтому и введены обработчики событий. То есть все, что нуждается в данных из конфига, нужно начинать выполнять изнутри onLoad. Необязательно пихать туда весь код. А просто например, создать функцию инициализации, которую и вызывать изнутри onLoad, выполняя ею начальные действия. Ведь они-то хоть и начальные, но уже требуют загруженных данных.

Те же картинки нужно грузить с помощью MovieClipLoader (есть событие onLoadInit), данные из файлов - класс LoadVars (события onLoad или onData).
Это нужно для того, чтобы знать, когда можно приступать к действиям над загруженным контентом или использовать конфигурационные данные.
Так что и тут все понятно.
__________________
Идите первым!


Последний раз редактировалось mooncar; 12.01.2011 в 12:00.
Старый 12.01.2011, 11:53
regman вне форума Посмотреть профиль Отправить личное сообщение для regman Найти все сообщения от regman
  № 15  
Ответить с цитированием
regman

Регистрация: Sep 2010
Сообщений: 16
Спасибо. Теперь все более прозрачно


Последний раз редактировалось regman; 13.01.2011 в 16:50.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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