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

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

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Я не в курсе, почему у вас прыгают иконки, но вот пара советов:
1) Не трогайте width и height. Для того, чтобы их не трогали сделали свойства scaleX, scaleY, которые можно легко ресетнуть
Код AS3:
scaleX = scaleY = 1;
Если надо попиксельно увеличивать, то
Код AS3:
scaleX = (scaleX * width + ...)/width;
Таким образом всегда можно получить настоящий размер мувика.
2) Для отладки визуального контента можете пользоваться graphics. Рисуем круг в нулевой координате родителя, и видим наверняка, где и относительно чего всё происходит.
3) Почему бы не воспользоваться Tween-библиотекой? Это сделает код гораздо проще.
__________________
There is no thing in this world that is not simple.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
чтобы не прыгали надо ставить иконки в контейнер так, чтобы их ЦЕНТР был в (0, 0) контейнера и растягивать потом контейнер а не иконку. То есть иконка внутри контейнера должна иметь координаты
Код AS3:
icon.x = - icon.width / 2;
icon.y = - icon.height / 2;
__________________
Reality.getBounds(this);

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
3) Почему бы не воспользоваться Tween-библиотекой? Это сделает код гораздо проще.
Спасибо, попробую. Честно говоря, от самых простых вещей и так башка пухнет, а ты говоришь твин-бтблиотеки.

Цитата:
Сообщение от Wolsh Посмотреть сообщение
чтобы не прыгали надо ставить иконки в контейнер так, чтобы их ЦЕНТР был в (0, 0) контейнера и растягивать потом контейнер а не иконку. То есть иконка внутри контейнера должна иметь координаты
Код AS3:
icon.x = - icon.width / 2;
icon.y = - icon.height / 2;
Что-то я туплю. В какой момент и куда это нужно вставлять? Это родительский класс должен перед добавлением каждой иконки такое проделывать или в самом классе иконки нужно конструктор с этого начать?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Если у иконки есть свой класс, то замечательно, он уже контейнер? Значит КАРТИНКУ ставим в такие координаты, чтобы ее центр был в (0, 0).
Тут надо напомнить, что такое Спрайт. У него нет никакого физического смысла, только геометрический. Это просто система координат. И когда ты масштабируешь спрайт, ты растягиваешь или сжимаешь его систему координат. При этом его (0, 0) остается на месте относительно родительской системы координат, то есть точка (0, 0) никуда не сдвигается, но оси растягиваются или сжимаются. Если картинка будет установлена так как я сказал, она тоже не будет никуда смещаться, а только растягиваться или сжиматься, оставаясь своим центром в точке (0, 0).

Нажмите на изображение для увеличения
Название: scale.png
Просмотров: 104
Размер:	34.1 Кб
ID:	33050
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Я не в курсе, почему у вас прыгают иконки, но вот пара советов:
1) Не трогайте width и height. Для того, чтобы их не трогали сделали свойства scaleX, scaleY, которые можно легко ресетнуть
Код AS3:
scaleX = scaleY = 1;
Если надо попиксельно увеличивать, то
Код AS3:
scaleX = (scaleX * width + ...)/width;
Таким образом всегда можно получить настоящий размер мувика.
Не знаю откуда ты это взял, но на самом деле они используют один и тот же механизм. При задании width / height, в реальности происходит именно скейл
А в твоем примере ты просто заставляешь матрицы пересчитаться 5 раз
__________________
Ко мне можно и нужно обращаться на ты)

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

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

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

Регистрация: Oct 2006
Сообщений: 2,281
поясните плз где там пятикратный пересчет матриц?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Когда ты обращаешься к width или height, scaleX/scaleY, пересчитываются матрицы трансформации.
Вот тут детальней, что это такое http://www.flasher.ru/forum/blog.php?b=703
__________________
There is no thing in this world that is not simple.

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

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Вот тут детальней, что это такое
Я знаю что такое матрица трансформации.Я не понимаю почему гетеры scaleX/Y (которые по сути есть элементы этой матрицы) должны ее пересчитывать?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Ну, например, ты изменил scaleX, и хочешь узнать ширину мувика теперь. Дёргаешь width, он дёргает матрицу трансформации, которая изменилась при изменении scaleX, достаёт оттуда scaleX и умножает на изначальную ширину. И наоборот.

Вся инфа о трансформациях объектов хранится в таких матрицах.

Цитата:
Я не понимаю почему гетеры scaleX/Y (которые по сути есть элементы этой матрицы)
scaleX/scaleY не являются элементами матрицы. Её элементами являются базисные оси, по которым и считается поворот и масштаб.
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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