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

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

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

Регистрация: Dec 2007
Сообщений: 69
По умолчанию smooting для контейнера Sprite или MovieClip

Подскажите плз. Есть ли какое-нибудь решение изменять параметр smoothing всем "растровым детям и внукам" контейнера Sprite, а еще лучше MovieClip?
Задача такова, что необходимо выполнять в определенный момент анимацию масштабирования контейнера, включающего растровые объекты и клипы с растровыми объектами. Естественно, что без smoothing качество растра страдает.

Старый 03.06.2011, 02:33
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну если не знаете, откуда у вас дети берутся, то перебором
Код AS3:
function smoothAll(container:DisplayObjectContainer):void
{
    for(var i:uint = 0; i < container.numChildren; i++)
    {
        var child:DisplayObject = container.getChildAt(i);
        if (child is Bitmap)
        {
            (child as Bitmap).smoothing = true;
        }
    }
}
__________________
Reality.getBounds(this);

Старый 03.06.2011, 07:52
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 3  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
включающего растровые объекты и клипы с растровыми объектами
Они не могут взяться из ниоткуда. Если эти картинки берутся из библиотеки Flash IDE, то им можно задать параметр smoothing заранее в меню properties

Старый 03.06.2011, 11:17
XBEEN вне форума Посмотреть профиль Отправить личное сообщение для XBEEN Найти все сообщения от XBEEN
  № 4  
Ответить с цитированием
XBEEN

Регистрация: Dec 2007
Сообщений: 69
Цитата:
Сообщение от goodguy Посмотреть сообщение
Они не могут взяться из ниоткуда. Если эти картинки берутся из библиотеки Flash IDE, то им можно задать параметр smoothing заранее в меню properties
Мне не подходит вариант задавать параметр сглаживания в библиотеке, т.к. в он необходим только в условиях анимации объекта. В спокойном состояние сглаживание ухудшает резкость картинки.

Добавлено через 2 минуты
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Ну если не знаете, откуда у вас дети берутся, то перебором
Код AS3:
function smoothAll(container:DisplayObjectContainer):void
{
    for(var i:uint = 0; i < container.numChildren; i++)
    {
        var child:DisplayObject = container.getChildAt(i);
        if (child is Bitmap)
        {
            (child as Bitmap).smoothing = true;
        }
    }
}
Видимо без рекурсии здесь не обойтись. Ведь контейнер может содержать другие контейнеры с растром. Мне нужен универсальный способ с возможностью сглаживать растр не только в спрайтах, но и в клипах.

Старый 03.06.2011, 11:44
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 5  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Ну этот способ как раз и подходит для обоих. И MovieClip и Sprite наследуют от DisplayObject

п.с. А рекурсия тут абсолютно не нужна. Способ описанный Wolsh-ем самый подходящий в такой ситуации


Последний раз редактировалось goodguy; 03.06.2011 в 11:48.
Старый 03.06.2011, 15:33
XBEEN вне форума Посмотреть профиль Отправить личное сообщение для XBEEN Найти все сообщения от XBEEN
  № 6  
Ответить с цитированием
XBEEN

Регистрация: Dec 2007
Сообщений: 69
Цитата:
Сообщение от goodguy Посмотреть сообщение
Ну этот способ как раз и подходит для обоих. И MovieClip и Sprite наследуют от DisplayObject

п.с. А рекурсия тут абсолютно не нужна. Способ описанный Wolsh-ем самый подходящий в такой ситуации
То что используется суперкласс DisplayObject - это естественно, но без рекурсии никак, ведь в контейнере может быть еще контейнеры и в этих контейнера еще могут быть контейнеры и т.д. Мне нужен универсальный способ с учетом "многоуровневой вложенности" объектов, в каждом из которых может оказаться растровый объект, которому нужно поменять значение свойства smoothing.

Что касается мувиклипов, то нет гарантии, что клип не перейдет на новый кадр в котором может оказаться растровый объект. В этом случае нужно какое-то событие, если клип меняет текущий кадр, то проверять есть ли в этом кадре какой-то объект, имеющий возможно растровый объект или являющийся растровым объектом и задать ему текущее значение свойства smoothing.

Старый 03.06.2011, 20:56
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Столько слов. Достаточно одной строчки.
Код AS3:
        if (child is Bitmap)
        {
            (child as Bitmap).smoothing = true;
        }
        if (child is DisplayObjectContainer) 
        {
            smoothAll(child);
        }
__________________
Reality.getBounds(this);

Старый 04.06.2011, 03:13
XBEEN вне форума Посмотреть профиль Отправить личное сообщение для XBEEN Найти все сообщения от XBEEN
  № 8  
Ответить с цитированием
XBEEN

Регистрация: Dec 2007
Сообщений: 69
А что будет в случае мувиклипа? Если вложенный мувик перейдет на кадр, где есть растр. Можно ли это как-то отследить каким-нибудь событием изменения кадра клипа?

Старый 04.06.2011, 04:58
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. Это уже не ко мне вопрос – я никогда не программировал мультфильмы. Для меня покадровая мультипликация и программирование приложений – две непересекающиеся технологии Flash. Возможно, в играх неизбежны коллизии, но там и подходы другие))
2. Если вам недорог фпс, повесьте этот метод обработчиком события ENTER_FRAME от корневого клипа, будет выполняться на каждый кадр. Как решить проблему с разным фпс во внутренних клипах – даже думать не хочу, ибо –
3. Вы занимаетесь ерундой. Утверждение, что смутинг портит качество картинок, надумано. Смутинг вступает в действие только когда изображение изменяет размер. На изображения с исходным размером он не действует и не может их испортить. А изображение, изменившее размер без смутинга, выглядит реально ужасно. Но если не согласны с этим – см. п.2
__________________
Reality.getBounds(this);

Старый 09.06.2011, 18:14
XBEEN вне форума Посмотреть профиль Отправить личное сообщение для XBEEN Найти все сообщения от XBEEN
  № 10  
Ответить с цитированием
XBEEN

Регистрация: Dec 2007
Сообщений: 69
В любом случае спасибо за советы. Но к сожалению с точки зрения дизайнеров smoothing уменьшает резкость и слегка даже размывает растр. В этом легко убедится если картинка небольшая и качественная.


Последний раз редактировалось XBEEN; 10.06.2011 в 12:10.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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