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

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

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

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию Matrix как отразить (flip) по X

Здравствуйте
Подскажите пожалуйста как мне реализовать отражение по Х


Для поворота использую следующий код (повороты строго на +-90 градусов использую)
Код AS3:
rotAngle=event.messageObj.message*Math.PI/180;
trace("rotAngle "+rotAngle);
transformMatrix.tx -= registrationPoint.x;
transformMatrix.ty -= registrationPoint.y;
transformMatrix.rotate(rotAngle);
transformMatrix.tx += registrationPoint.x;
transformMatrix.ty += registrationPoint.y;
BITMAP.transform.matrix=transformMatrix;
Также мне нужно чтобы и повернутую можно было отражать
Подскажите как сделать

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
.scale(-1, 1) не помогает?
__________________
Reality.getBounds(this);

Старый 28.12.2010, 18:38
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 3  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
к сожалению не помогает, картинка смещается влево при первом флипе (но отражается, конечно), и смещается на свое место при втором флипе (тоже отразившись)

Добавлено через 6 минут
Код AS3:
var matrix:Matrix = BITMAP.transform.matrix;
matrix.a=-matrix.a;
if(matrix.a<0){
   matrix.tx+=BITMAP.width
}else{
   matrix.tx-=BITMAP.width;
}
BITMAP.transform.matrix=matrix;
Но этот механизм неправильно работает если повернуть сначала картинку на 90 градусов, к примеру, без поворота работает правильно

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Так Вы за логикой преобразований то следите, Флэш же не телепат - он делает точно то, что Вы говорите, а не то, что Вы думаете. Повернуть и отразить это совсем не то же самое, что отразить и повернуть. И конечно, отразить относительно Top-Left не то же самое, что отразить относительно центра. Координаты придется корректировать, а как Вы хотели?)))

Добавлено через 24 минуты
Иногда помогает просто разместить изображение в объекте так, чтобы точка трансформации была в его центре. Это сразу делает большинство преобразований близкими к человеческой интуиции. А вообще суть в том, что иногда текущее действие надо "вставлять" ДО предыдущих. Это реализовано, в частности, в Matrix3D, где преобразование можно добавить как в начало, так и в конец "списка".
__________________
Reality.getBounds(this);

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

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
ясно, спасибо

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

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

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


 


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


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