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

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

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

Регистрация: Apr 2011
Адрес: Томск
Сообщений: 57
По умолчанию Бибилиотека MovieClip'ов и взаимодействие с ней

Есть библиотека MovieClip'ов, которую я подгружаю так:
Код AS1/AS2:
contentHolder = createEmptyMovieClip("contentHolder", 1);
var myLoader:MovieClipLoader = new MovieClipLoader();
myLoader.loadClip("H3IconListLibrary.swf", contentHolder);
После чего в onLoadInit вызываю функцию в загруженной флешке, которая показывает нужны мувклип.

Как я знаю из загруженной флешки нельзя получить в основную флешку мувклип, и с битмапом у меня ничего не получилось.
Отсюда вопрос: как быть, если мне нужно из этой библиотеки загрузить множество клипов в множество контейнеров? Так же как это отразится на производительности и памяти?

Старый 12.05.2011, 14:52
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
По поводу битмапы - приведу свой пример.
В последнем проекте у меня, например, грузится по 4 библиотеки для каждого этажа здания, всего на 720 кадров на каждый этаж, так было.
Получение битмапы для аттача на сцену прописано в самой скомпилированной библиотеке:
Код AS1/AS2:
import flash.display.BitmapData;
 
function getBitmap(link:String):BitmapData
{
	var bmp:BitmapData = BitmapData.loadBitmap(link);
	return bmp;
}
На сцене там ничего нет, в каждой либе просто экспортированные картинки, linkage которых - последовательно типа 0001.png .... 0179.png, 0189.png .... 0359.png, и так по 4 либы до 720 кадров.
Ну это просто так нужно было. Секвенция на 720 кадров полностью не влезала в одну либу.

После загрузки всех библиотек в основной флешке вызов был достаточно прост, происходил на onEnterFrame:
Код AS1/AS2:
function showFrame() 
{
	...
	container.bmp.dispose(); //удаляем предыдущую битмапу
	var currentLib:MovieClip = //функция, вычисляющая текущую библиотеку
	var linkageId:String = //функция, формирующая linkage
	var bmp:BitmapData = currentLib.getBitmap(linkageId);
	container.attachBitmap(bmp, 0); //аттачим новую
	...	
}
Загруженные библиотеки скрыто лежат на сцене.

Контейнеров у меня было не множество, а один, но битмапа таким образом аттачилась по EnterFrame с большой скоростью.. это была покадровая анимация больших растровых изображений.
Все эти нюансы вам, наверное, не важны, я просто обрисовал принцип ..
__________________
Идите первым!


Последний раз редактировалось mooncar; 12.05.2011 в 17:34.
Старый 13.05.2011, 15:28
stantler вне форума Посмотреть профиль Отправить личное сообщение для stantler Найти все сообщения от stantler
  № 3  
Ответить с цитированием
stantler
 
Аватар для stantler

Регистрация: Apr 2011
Адрес: Томск
Сообщений: 57
Спасибо за ответ. Т.е. Вы создавали статические элементы с помощью библиотек?
У меня ситуация такова: есть окно, в котором ScrollingList. Он состоит из контейнера Item'ов и скроллбара. В скролллист параметры передаются массивом: [linkageId:String,...]. А затем:
Код AS1/AS2:
Icons(element).attachMovieClip(linkageId);
По другому к элементам скроллинглиста обращаться никак нельзя - спецификация Scaleform.
Отсюда вопрос: как передавать из контейнера в массив, для дальнейшей работы?

Старый 13.05.2011, 15:57
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
А где выполнятся это "затем"?
Код AS1/AS2:
Icons(element).attachMovieClip(linkageId);
В самом компоненте? Или вы пишите?

Добавлено через 2 минуты
Если сами, то зачем массив передавать, если вы сами же и аттачите?
Можно сделать библиотеку, в нее прописать нужный метод сразу, а потом его вызывать с передачей ему параметров - Icons(element), linkageId.
__________________
Идите первым!

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

Регистрация: Apr 2011
Адрес: Томск
Сообщений: 57
Прошу прощения, что не ясно выразился.
"Затем" - это расширенный класс для дефолтного отрисовщика элементов для скролллиста.
Так же не просто массив, а массив объектов. Массив нужен затем, что у меня 5 видимых элементов в этом скролллисте, а их может быть бесконечно много. Так же там хранится дополнительная информация, которая отсылается, например при нажатии на какой-то айтем.
Получается так, я передаю компоненту ScrollingList массив объектов:
Код AS1/AS2:
scrollingList.dataProvider = [obj1, obj2, obj3,...];
Он сам смотрит что отрисовывать, затем инициализирует Х элементов для показа, передавая каждому свой obj. Я лишь переопределил что из этого объекта куда пихать.

Добавлено через 6 минут
А в этих айтемах есть мувклип icon и 2 тексфилда. И именно в этот мувклип я и хочу добавлять элементы из библиотеки

Старый 13.05.2011, 23:31
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Понятно.
Нет, вряд ли я смогу подсказать что-то большее, как работать с библиотекам.
Поищите по форуму, я при необходимости нашел тут нужную инфу по своему смежному с вашим вопросу.
__________________
Идите первым!


Последний раз редактировалось mooncar; 14.05.2011 в 10:49.
Старый 14.05.2011, 09:05
stantler вне форума Посмотреть профиль Отправить личное сообщение для stantler Найти все сообщения от stantler
  № 7  
Ответить с цитированием
stantler
 
Аватар для stantler

Регистрация: Apr 2011
Адрес: Томск
Сообщений: 57
Спасибо большое, буду дальше искать

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

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

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


 


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


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