Показать сообщение отдельно
Старый 16.02.2012, 14:42
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Второй вариант расходует больше памяти, но он быстрее.

Инструкция DefineSprite создает мувиклип. Каждый его кадр всегда создается заново. Делают это наборы инструкций PlaceObject, PlaceObject2, RemoveObject, RemoveObject2, и некоторые другие. В качестве добавляемого объекта может служить шейп, залитый битмапой. Этот шейп, а также битмапа уже единожды созданы (аха, в "библиотеке") и имеют свой уникальный идентификатор. Т.о. PlaceObject2, например, может "положить" шейп No. 1 в первый кадр. Шейп, в свою очередь, имеет список команд для создания очертания кривыми Безъе, а также инструкцию по заливке фигуры битмапой No. 2. Можно охарактеризовать это "программой" действий. Учтите, что такое "рисование" отнимает кучу времени.

Программы у двух экземпляров мувиклипов, как вы догадались, одинаковые. Алгоритм кеширования, запускающийся по установке акцессора cacheAsBitmap немного спасает однокадровый мувиклип тем, что раз отрисованная программой битмапа хранится в памяти, и по наступлению нового кадра нет необходимости проигрывать сборку заново, — для рендера будет использована именно она.

Во втором варианте есть уже отрисованные битмапы. Они жрут память и ждут когда их закинут на рендер.

Добавлю, что класс flash.display.MovieClip и мувиклип как DefineSprite, — это как ценник и товар. Ценник всегда имеет один и тот же размер )
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 16.02.2012 в 14:46.