Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Работа с изображениями (http://www.flasher.ru/forum/showthread.php?t=202956)

Вопрос 22.08.2013 00:14

Работа с изображениями
 
Здравствуйте!
Я начинающий флешер экшнскриптер три.

Не поможете ли разобраться? В общем, возник вопрос как лучше всего работать с изображениями.
Конкретно — нужно загрузить много, допустим 50, картинок и иметь возможность ими управлять, вызывать, удалять (с иерархии отображения).

Во первых: что лучше, загрузить их при компиляции (встраиваемые изображения) или нафигачить фрагментов во флеше (то есть муви клипов в библиотеку)?
Во вторых: как с ними удобней обращаться? Ну например, нужно чтобы конкретное изображение появилось по желанию пользователя. Скажем, чтоб через переменную:String передавалось нужное название изображения и оно вызывалось, помещалось на экран.

И ещё вопрос: как, снова же, удобней можно обращаться к элементам библиотеки? Нужно, к примеру, автоматом добавить на экран 10 разных мувиков. Не писать же десять раз new Example_mc0(); new Example_mc1(); new Ex.....

PS.: Работаю в CS5. Оказывается в нем нельзя загрузить картинку на этапе компиляции, верно?

dark256 22.08.2013 00:23

Смотря по тому, насколько часто эти 50 картинок будут изменяться.
Если раз и навсегда - в либу.
Если нет - внешними файлами.

10 мувиков добавлять......

new Example( "linkId"+i ) - в цикле...

SvetozarPNZ 22.08.2013 10:07

Хотите фотогалерею делать в браузере? Внешние файлы загрузите в массив. Работайте с картинками через массив. Пользователь либо на иконки будет нажимать, либо на стрелки, а вы все это свяжите с функциями, которые будут обращаться к массиву картинок.

По работе с библиотекой как вариант: создать мувик с картинками и оращаться к ним по z-индексу.

Код AS3:

massiveOfPictures [i] = new Example ().getChildAt[i]; // i - позиция дочернего объекта в индексе


Вопрос 22.08.2013 14:55

Цитата:

Сообщение от dark256 (Сообщение 1144429)
10 мувиков добавлять......

new Example( "linkId"+i ) - в цикле...

Извините, непонятно как это должно работать. Что это за linkId. Выдает ошибку: "Неправильно количество аргументов. Ожидается 0."

Добавлено через 24 минуты
Возможен ли вообще обход элементов библиотеки?

Добавлено через 54 минуты
Пока что нашел выход в добавлении мувиков в массив. Но тут их нужно строчить:
array.push(new Example0());
array.push(new Example1());
.....
.....
array.push(new Example34));

Понимаете о чем я? :)

Я, конечно, могу и настрочить — не лень. Но будет ли это эффективно с точки зрения кода? Не будут ли это реально лишние байты?
_________________

Цитата:

Сообщение от SvetozarPNZ (Сообщение 1144449)
По работе с библиотекой как вариант: создать мувик с картинками и оращаться к ним по z-индексу.

Код AS3:

massiveOfPictures [i] = new Example ().getChildAt[i]; // i - позиция дочернего объекта в индексе


Этот вариант интересен, но опять же, удобно ли будет работать с таких подходом? А как с добавлением в иерархию отображения?
Какая разница от моего подхода, кроме того, что уже не нужно строчить пол километра кода?

SvetozarPNZ 23.08.2013 13:16

Цитата:

Какая разница от моего подхода, кроме того, что уже не нужно строчить пол километра кода?
Разница в адресации к хранилищу данных. Вам не нужно прописывать класс для каждого мувика в библиотеке, но заранее надо знать, какой объект в каком слое лежит.
Это решаемо, но с некоторыми ограничениями
Код AS3:

massiveOfPictures [i] = new Example ().getChildByName('instanceName'); // instanceName - имя объекта в мувике

Нужно учитывать, что этот способ медленнее, но если у вас не тысячи картинок, то его можно использовать. Хотя для программиста не айс нагружать процессор лишней работой (даже если разница в микросекундах).

Как вариант, еще научитесь загружать картинки извне. Скорее всего у вас будет браузерное приложение, там надо будет сделать прелоадер. Если общий вес картинок в библиотеке будет большим, то при загрузке пользователь вместо вашей флешки будет видеть белое пятно.

Для добавления объектов отображения используйте методы класса DisplayObjectContainer. Там и примеры есть и все что надо.


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

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