![]() |
smooting для контейнера Sprite или MovieClip
Подскажите плз. Есть ли какое-нибудь решение изменять параметр smoothing всем "растровым детям и внукам" контейнера Sprite, а еще лучше MovieClip?
Задача такова, что необходимо выполнять в определенный момент анимацию масштабирования контейнера, включающего растровые объекты и клипы с растровыми объектами. Естественно, что без smoothing качество растра страдает. |
Ну если не знаете, откуда у вас дети берутся, то перебором
Код AS3:
|
Цитата:
|
Цитата:
Добавлено через 2 минуты Цитата:
|
Ну этот способ как раз и подходит для обоих. И MovieClip и Sprite наследуют от DisplayObject
п.с. А рекурсия тут абсолютно не нужна. Способ описанный Wolsh-ем самый подходящий в такой ситуации |
Цитата:
Что касается мувиклипов, то нет гарантии, что клип не перейдет на новый кадр в котором может оказаться растровый объект. В этом случае нужно какое-то событие, если клип меняет текущий кадр, то проверять есть ли в этом кадре какой-то объект, имеющий возможно растровый объект или являющийся растровым объектом и задать ему текущее значение свойства smoothing. |
Столько слов. Достаточно одной строчки.
Код AS3:
|
А что будет в случае мувиклипа? Если вложенный мувик перейдет на кадр, где есть растр. Можно ли это как-то отследить каким-нибудь событием изменения кадра клипа?
|
1. Это уже не ко мне вопрос – я никогда не программировал мультфильмы. Для меня покадровая мультипликация и программирование приложений – две непересекающиеся технологии Flash. Возможно, в играх неизбежны коллизии, но там и подходы другие))
2. Если вам недорог фпс, повесьте этот метод обработчиком события ENTER_FRAME от корневого клипа, будет выполняться на каждый кадр. Как решить проблему с разным фпс во внутренних клипах – даже думать не хочу, ибо – 3. Вы занимаетесь ерундой. Утверждение, что смутинг портит качество картинок, надумано. Смутинг вступает в действие только когда изображение изменяет размер. На изображения с исходным размером он не действует и не может их испортить. А изображение, изменившее размер без смутинга, выглядит реально ужасно. Но если не согласны с этим – см. п.2 |
Цитата:
|
В любом случае спасибо за советы. Но к сожалению с точки зрения дизайнеров smoothing уменьшает резкость и слегка даже размывает растр. В этом легко убедится если картинка небольшая и качественная.
|
1. Я предложил Вам не совет, а единственное решение задачи в том виде, в каком Вы ее поставили, с покадровой проверкой всех экранных объектов в свф или в только перемещаемом контейнере – это уже Ваше дело – с минимально необходимым кодом.
2. Я семь лет работаю дизайнером и.. знаком :) с прописными истинами, описанными в каждой книге "для чайников" – вектор сохраняет качество (информацию) при масштабировании, а битмап должен быть нарисован в том размере, в котором будет использован, т.к. при масштабировании неизбежно и необратимо искажается. Если Вы решились масштабировать битмап, Вам придется выбрать из двух зол меньшее, но никогда отмасштабированное изображение не будет таким же как исходное, так как либо необратимо теряет, либо необратимо добавляет новую информацию. Поэтому например файлы иконок содержат (в идеале) в себе несколько изображений разного размера, а не одно, которое масштабируется под нужный размер автоматически. Идеальное решение – иметь заготовленный качественный битмап под каждый "кадр" масштабирования или поворота, но это естественно неприемлемо как по трудозатратам так и по весу файла. А значит Ваши битмапы будут искажаться, и Вы можете только выбрать способ - пересчет каждого пикселя в зависимости от соседних (smoothing) или прямое копирование/уничтожение пикселей по сетке. Как переключаться, я показал. Удачи. |
Растр заготавливается в естественных размерах, однако задача - анимировать контейнер, содержащий клипы и спрайты с растром, используя масштабирование. На момент анимации использовать smoothing - очевидное решение, чтобы глаза не резало. Когда анимация останавливается и контейнер получает свои исходные размеры, smoothig отключаем.
Видимо с клипами никак не получится (( |
Я дал решение - ответ 9 п.2. Если Вам лень это попробовать, я бессилен.
Еще просьба не цитировать сообщения, расположенные сразу над Вашим. Итак понятно, на что Вы отвечаете. |
| Часовой пояс GMT +4, время: 01:41. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.