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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.11.2017, 12:10
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 21  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
так, а где тут пересчет матрицы?И почему бы не кешировать это все?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Пересчёт матрицы здесь в том, что scaleX это длина базисного вектора i, а scaleY длина базисного вектора j, и её нужно посчитать прежде, чем отдавать.

Не закешировать, а вдруг вы изменили матрицу руками для каких-то целей. Тогда ваши изменения будут отображаться, но не будут доставаться по width/height/scaleX/scaleY.
__________________
There is no thing in this world that is not simple.

Старый 21.11.2017, 12:26
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 23  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
разве эта длина не сидит уже в значениях матрицы a,d?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Нет, там сидят компоненты базисных векторов i, j.
Мне кажется, вы не совсем представляете, что такое базисные вектора, поэтому я попытаюсь объяснить.
i - это вектор, который говорит, в какую сторону и с каким масштабом смотрит ось OX, по умолчанию это вектор (1, 0), т.е. вправо, с единичным масштабом
j - это вектор, который говорит, в какую сторону и с каким масштабом смотрит ось OY, по умолчанию (0, 1), т.е. вниз* с единичным масштабом
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 21.11.2017 в 12:49.
Старый 21.11.2017, 12:33
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 25  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
вся матрица это и есть компоненты базисных векторов, а компоненты a и d - это как раз scaleX и scaleY

Добавлено через 4 минуты
Цитата:
i - это вектор, который говорит, в какую сторону и с каким масштабом смотрит ось OX, по умолчанию это вектор (1, 0), т.е. вправо, с единичным масштабом
j - это вектор, который говорит, в какую сторону и с каким масштабом смотрит ось OY, по умолчанию (0, 1), т.е. вверх с единичным масштабом
Приведи пример когда значения a,d не совпадают с scaleX/Y

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Ну, м.б. отчасти это может быть и верно, когда вы не поворачиваете объект*. Тогда это действительно будет так Но во всех остальных случаях эти числа будут отличаться от scaleX, scaleY.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 21.11.2017 в 12:52.
Старый 21.11.2017, 12:39
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 27  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от undefined Посмотреть сообщение
разве эта длина не сидит уже в значениях матрицы a,d?
В as3 матрицы не кэшируются
__________________
Ко мне можно и нужно обращаться на ты)

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Но всё равно советую пользоваться scaleX и scaleY, т.к. можно сбросить масштаб одной строчкой, не заводя никаких доп переменных вроде initialSize.
Я так и начал делать с масштабом, то потом перешёл к пикселям, потому что компоненты разного размера. И если одно "моргание" связано с 20% увеличением размера, то иконка 25х25 увеличится на 5 пикс., а компонент 100х100 - на целых 20. Только из-за этого.

Старый 21.11.2017, 12:42
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 29  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Ну, м.б. отчасти это может быть и верно, когда ваш объект повёрнут на 180 градусов и отражён по горизонтали. Тогда это действительно будет так Но во всех остальных случаях эти числа будут отличаться от scaleX, scaleY.
объект растянут в 2 раза по x и y,сидит в начале координат,не повернут и не отражен.Какая у него будет матрица?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Приведи пример когда значения a,d не совпадают с scaleX/Y
Поверните объект на любой угол, не кратный 360 и посмотрите на компоненты матрицы.

Добавлено через 10 минут
Код AS3:
var obj:Sprite = new Sprite();
trace(obj.transform.matrix);
obj.rotation = 15;
trace(obj.transform.matrix);
Код:
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=0.9659271240234375, b=0.258819580078125, c=-0.258819580078125, d=0.9659271240234375, tx=0, ty=0)
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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