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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.03.2010, 16:54
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 1  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
По умолчанию не получается плавного (сглаженного) движения спрайта с использованием copyPixel

Собственно сабж. Примерный алгоритм построения игровой графики такой:

Используется двойная буферизация описанная здесь - http://www.makeyourgame.org.ua/flexfighters/part01.php

В флэшку встраивается графика

Код AS3:
    [Embed(source="../media/sisi.png")]
    public static var BrownPlane:Class;
    public static var BrownPlaneGraphics:GraphicsResource = new GraphicsResource(new BrownPlane());
И с этого ресурса делается копия в BitmapData для скорости обработки. у нас есть игровой объект и у него отдельное поле "bitmap" которое хранит его картинку.

Теперь самое главное, есть главный Canvas на graphics которого отрисовывается наш спрайт. Отрисовывается вот так:

Код AS1/AS2:
 
db.copyPixels(graphics.bitmap, graphics.bitmap.rect, position, graphics.bitmapAlpha, new Point(0, 0), true);
где:

db - собственно graphics игровой области
graphics.bitmap - ссылка на BitmapData содержащий спрайт

Уважаемые знатоки, внимание, вопрос!
Как "включить" режим сглаживания объекта, сделать вывод по дробным координатам?
Потому как сейчас он при выводе просто округляет координаты до ближайшего целого. не связано ли это с тем, что используется "низкоуровневая" операция copyPixels которая тупо копирует пиксель-в-пиксель и про сглаживание вообще ничего и слыхом не слыхивала? Это значит что smoothing надо реализовывать самому?

А вот и пример - http://2nets.ru/a1.swf

слева вверху реальные координаты объекта (женская грудь) взятые из его свойства position ну и дерганье я думаю вы сами видите


Последний раз редактировалось Alex_YAROST_22; 18.03.2010 в 17:07.
Старый 22.03.2010, 12:18
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 2  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
Уважаемые гуру форума, ну что же никто даже не намекнет ничего?

Может есть другой быстрый способ вывода игровой графики, а?

Старый 22.03.2010, 12:59
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 3  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Да, copyPixels копирует только в целые координаты. Используй draw().

Старый 22.03.2010, 13:14
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 4  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
откройте flash ide. cs3, cs4, не важно. Киньте на сцену маленький битмап. Выделите его, нажмите f8, оберните его в символ, название значения не имеет. Откройте библиотеку, откройте свойства битмапа (не символа, а битмапа), поставьте галочку Allow smoothing. Дайте мувику instance name "mc". Добавьте код на таймлайн:

Код AS3:
addEventListener (Event.ENTER_FRAME,efHr);
 
function efHr (e:Event):void {
	mc.x+=0.1;
	mc.y+=0.3;
}
что вы увидите? Увидите, что мувик медленно и плавно передвигается. Но при этом он становится то размытым, то чётким и это очень бросается в глаза. Так что, никаккое "субпиксельное" сглаживание вам не подходит. У вас нормальный подход, просто слишком низкая скорость перемещения, увеличте ее и все будет ок.
__________________
мой пустой блог

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

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

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


 


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


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