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

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

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

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
По умолчанию Как сделать зеркальную копию изображения в BitmapData?

Собственно задача: Имеем спрайт содержащий изображение. Нужно скопировать правую половину этого изображения и отзеркалить её в новом BitmapData, ширина которого, должна быть равна ширине копируемой области. Ну вот как такое сделать?

Старый 31.07.2009, 18:18
Venya2007 вне форума Посмотреть профиль Отправить личное сообщение для Venya2007 Найти все сообщения от Venya2007
  № 2  
Ответить с цитированием
Venya2007
[+4 16.07.08]

Регистрация: Jul 2008
Адрес: Gamburg
Сообщений: 108
newData.copyPixels(sourceData,new Rectangle(sourceData.width/2,0,sourceData.width/2,sourceData.height))
Потом проскейлить контейнер

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Можно сразу в битмапу копировать в масштабе:
Код AS3:
var bmp:BitmapData = new BitmapData(dispObj.width / 2, dispObj.height, true, 0x000000);
var matrix:Matrix = new Matrix(-1, 0, 0, 1, dispObj.width, 0);
bmp.draw(dispObj, matrix, null, null, new Rectangle(0, 0, dispObj.width / 2, dispObj.height));
При условии что точка регистрации спрайта - верхний левый угол.

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

блогер
Регистрация: Apr 2009
Адрес: НиНо
Сообщений: 185
Записей в блоге: 12
Что такое точка регистрации спарайта??

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
имелся ввиду центр локальной системы координат спрайта

Старый 31.07.2009, 21:35
Cybo вне форума Посмотреть профиль Отправить личное сообщение для Cybo Найти все сообщения от Cybo
  № 6  
Ответить с цитированием
Cybo

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
О! Спасибо!

Добавлено через 4 минуты
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Код AS3:
var bmp:BitmapData = new BitmapData(dispObj.width / 2, dispObj.height, true, 0x000000);
var matrix:Matrix = new Matrix(-1, 0, 0, 1, dispObj.width, 0);
bmp.draw(dispObj, matrix, null, null, new Rectangle(0, 0, dispObj.width / 2, dispObj.height));
Такой вариант не пойдёт, так как draw(....new Rectangle(0, 0, dispObj.width / 2, dispObj.height)) - сделает снимок левой половинки потому-что Rectangle(0, 0,...

Добавлено через 6 минут
Цитата:
Сообщение от Venya2007 Посмотреть сообщение
Потом проскейлить контейнер
Это что означает (просклеить)?

Старый 01.08.2009, 01:07
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 7  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Код AS3:
DisplayObject.scaleX *=-1
__________________
Дело не в тебе

Старый 01.08.2009, 12:45
Cybo вне форума Посмотреть профиль Отправить личное сообщение для Cybo Найти все сообщения от Cybo
  № 8  
Ответить с цитированием
Cybo

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
Проблема не в том, чтобы сделать зеркало, а в том, что нужно взять определённую область и отзеркалить.

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Цитата:
Сообщение от Cybo Посмотреть сообщение
Такой вариант не пойдёт, так как draw(....new Rectangle(0, 0, dispObj.width / 2, dispObj.height)) - сделает снимок левой половинки потому-что Rectangle(0, 0,...
Поэтому сначала применяется матрица трансформаций, которая зеркалит спрайт. Тогда Rectangle(0, 0,... дает правую сторону. Проверил бы сначала.

Старый 01.08.2009, 13:33
Cybo вне форума Посмотреть профиль Отправить личное сообщение для Cybo Найти все сообщения от Cybo
  № 10  
Ответить с цитированием
Cybo

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
ааааааааааа, действительно! Не приметил... спасибо - это классная идея!!!!

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

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

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


 


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


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