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

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

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
По умолчанию Масштабирование

Что-то я впал в нубство...
Код AS3:
trace(mc.width);//100
mc.rotation=45;
trace(mc.width);//91.9
mc.width=100;
trace(mc.width);//98.15
Почему в результате 2-го трэйса выводит 91.9 я еще могу понять. А вот почему последний выдает значение, отличное от 100 - не понятно.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 12.09.2011, 12:19
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 2  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
А вот почему последний выдает значение, отличное от 100 - не понятно.
Отличное от 100, потому что в результате присвоений, ширина не равна 100. Переформулирую: Почему происходит странная (неправильная) установка width и height, при rotation отличное от 0 (360). По существу я сам не знаю, но происходит, что-то не понятное.

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

Регистрация: Nov 2010
Сообщений: 434
потому что вы переворачиваете всю область(прямоугольную или квадратную) mc, если повернуть квадрат на 45 градусов его длина будет больше !???

Старый 12.09.2011, 12:49
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
потому что вы переворачиваете всю область(прямоугольную или квадратную) mc, если повернуть квадрат на 45 градусов его длина будет больше !???
Гениально!
Цитата:
Почему в результате 2-го трэйса выводит 91.9 я еще могу понять.
Вообще, задание ширины и высоты - это, как бы, не задание ширины и высоты, а присвоение значения scaleX и scaleY. Попробуй переотпределить сеттеры и геттеры ширины/высоты для нужного объекта, и исползовать там целые числа

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
если повернуть квадрат на 45 градусов его длина будет больше !???
У квадрата есть длина ?!?!?!

по теме:
Я думаю, что это связано с тем, что все преобразования объектов происходят через матрицу трансформации. В том числе ширина задается через масштаб. В матрице одни и те же элементы отвечают и за поворот и за масштабирование, поэтому когда мы их совмещаем - происходит что-то непонятное.
__________________
...вселенская грусть

Старый 12.09.2011, 23:22
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 6  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
1. не длина а ширина =)
2. всё же представьте квадрат повёрнутый на 45 градусов, и измерьте расстояние от крайне левого угла до крайне правого по оси X
3. представьте обычный квадрат(поворот на 0 градусов) и сделайте тоже самое
4. сравните результаты

объясняю канеш хрен пойми как, но идея сама вроде правильная

Старый 13.09.2011, 00:04
wolhw вне форума Посмотреть профиль Отправить личное сообщение для wolhw Найти все сообщения от wolhw
  № 7  
Ответить с цитированием
wolhw

Регистрация: Oct 2010
Сообщений: 57
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
Почему в результате 2-го трэйса выводит 91.9 я еще могу понять. А вот почему последний выдает значение, отличное от 100 - не понятно.
скорее всего сетер задает видимую(реальную) ширину/высоту , а герет выдает ширину/высоту самого обьекта(неважно на скольно градусов он повернут)
или наоборот))


Последний раз редактировалось wolhw; 13.09.2011 в 00:38.
Старый 13.09.2011, 00:51
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 8  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Ну да, получается что выдаётся ширина относительно сцены так сказать:

[IMG]http://i.***********/i7/9be1d413cae49e4e45682b57fa988971/1-2-407/40740967/heigth.jpg[/IMG]

Старый 13.09.2011, 00:55
wolhw вне форума Посмотреть профиль Отправить личное сообщение для wolhw Найти все сообщения от wolhw
  № 9  
Ответить с цитированием
wolhw

Регистрация: Oct 2010
Сообщений: 57
с етим ясно, но что делает сеттер остается загадкой для меня
Код AS3:
trace("orig-->>"+mc.width,mc.height);
 
		mc.rotation=45;
		mc.width=1;
		mc.height=100;
		trace("rezz-->>"+mc.width,mc.height);
результат:
Код:
orig-->>100 100
rezz-->>85.6 85.6
на екране прямоугольник width!=1;
если же сделать height=1 а width=100 тогда на екране полоска в 1 пиксель(height==1) повернута на 45 градусов, а если поменять местами
Код AS3:
mc.height=100;
mc.width=1;
тогда width==1;


Последний раз редактировалось wolhw; 13.09.2011 в 01:09.
Старый 13.09.2011, 20:02
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 10  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
В общем, исходя из вышесказанного, система "стандартных" трансформаций во флеше, скажем так, далека от совершенства. Посему появилось желание перевести в своем приложении основной функционал на систему с использованием матриц (использоваться по сути будет только поворот, изменение координат (эту составляющую наверное можно и не переводить) и размера визуальных объектов). Отсюда возникает вопрос - как я могу определить реальную ширину объекта и потом поменять полученное значение, на то, которое меня интересует?
К примеру:
Код AS3:
mc.alternativeWidth+=10;
Данный код должен получить значение ширины (не зависимо от значения поворота - getter) и присвоить новое значение (опять же в системе локальных координат - setter)
Собственно вся суть вопроса сводится к способу получения реальных размеров объекта. Заранее спасибо.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

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

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


 


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


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