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

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

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

Регистрация: Jul 2009
Сообщений: 6
По умолчанию Изменение координаты при изменении масштаба

Проблема в следующем:
Есть Loader-ы с загруженными изображениями. Требуется, чтобы при наведении мыши картинка увеличивалась в размерах, а при уведении курсора - возвращалась в нормальное состояние. /
Соответственно, сделал обработчики onRollOver и onRollOut, в которых делаю изменение _xscale и _yscale.
Код AS1/AS2:
_root["my_loader"].onRollOver = function()
{
       this._xscale = 150;
       this._yscale = 150;
}
 
_root["my_loader"].onRollOut = function()
{
       this._xscale = 100;
       this._yscale = 100;
}
Проблема в том, что при передвижении мыши к левой границе лоадера начинается мигание изображения, т.к. при уменьшении масштаба оюбъект сдвигается влево, вновь срабатывает сообытие onRollOver, масштаб увеличивается, объект сдвигается вправо и т.д.
Применение SetSize дает тот же эффект.

Как с этим бороться?

И заодно глупый вопрос: как обработать для UIScrollBar событие прекращения скроллинга?

Старый 24.07.2009, 17:40
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вроде нет зацикливания при вашем коде на тестовом мувике. Навели (произошло onRollOver) - mc увеличился - убрали (произошло onRollOut) - mc восстановился до 100%.
А движение влево зачем?

Старый 24.07.2009, 17:54
SeekerIU5 вне форума Посмотреть профиль Отправить личное сообщение для SeekerIU5 Найти все сообщения от SeekerIU5
  № 3  
Ответить с цитированием
SeekerIU5

Регистрация: Jul 2009
Сообщений: 6
Цитата:
Вроде нет зацикливания при вашем коде на тестовом мувике. Навели (произошло onRollOver) - mc увеличился - убрали (произошло onRollOut) - mc восстановился до 100%.
А движение влево зачем?
Попробуйте навести мышку на иконку, после чего медленно придвинуть её к левой границе иконки. Эффект смещения координаты и зацикливания заметен.
Это, кстати, и в хелпе задокументировано:
Цитата:
Scaling the local coordinate system affects the _x and _y property settings, which are defined in whole pixels. For example, if the parent movie clip is scaled to 50%, setting the _x property moves an object in the movie clip by half the number of pixels as it would if the movie were set at 100%.


Последний раз редактировалось SeekerIU5; 24.07.2009 в 18:09.
Старый 24.07.2009, 18:14
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Если содержимое мувика ориентировно по центру, и нет никаких движений, а только изменение масштаба, то все нормально.

Старый 24.07.2009, 18:33
SeekerIU5 вне форума Посмотреть профиль Отправить личное сообщение для SeekerIU5 Найти все сообщения от SeekerIU5
  № 5  
Ответить с цитированием
SeekerIU5

Регистрация: Jul 2009
Сообщений: 6
Цитата:
Если содержимое мувика ориентировно по центру, и нет никаких движений, а только изменение масштаба, то все нормально.
Простите за глупый вопрос: как ориентировать содержимое Loader-а по центру?

Старый 24.07.2009, 18:50
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Часто приходится иметь дело с динамическим контентом и я использую для этих целей специально написанную функцию, очень удобно:


Код AS1/AS2:
//////// ФУНКЦИЯ ПОДГОНКИ ЗАГРУЖЕННЫХ КАРТИНОК ПО РАЗМЕРУ И ЦЕНТРУ СЛОТА /////////////////
resizeClip = function(mc, maxWidth, maxHeight) {
     var ratio_x = maxWidth / mc.image._width;
     var ratio_y = maxHeight / mc.image._height;
     if (ratio_x <= ratio_y) {
         if (ratio_x < 1) {
             // ширина равна максимальной а высота в соответствии с пропорцией
             mc.image._width = maxWidth;
             mc.image._yscale = mc.image._xscale;
         } 
     } else {
         if (ratio_y < 1) {
             // высота равна максимальной а ширина в соответствии с пропорцией
             mc.image._height = maxHeight;
             mc.image._xscale = mc.image._yscale;
         }
     }
     // центруем 
     mc.image._x = -1 * Math.round(mc.image._width/2);
     mc.image._y = -1 * Math.round(mc.image._height/2);
     //сглаживаем
     mc.image.forceSmoothing = true; 
};
 
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcLoader.addListener(listener);
 
//после загрузки, ресайзим о центруем:
listener.onLoadInit = function(target_mc:MovieClip) {
resizeClip(target_mc._parent, 126, 84);
}
//а перед загрузкой где-то, где нужно создается контейнер и внутри него еще контейнер image:
slide_mc.createEmptyMovieClip("image", 0);
mcLoader.loadClip(url, slide_mc.image);
То есть ресайзим и центруем клип-контейнер image внутри slide_mc.
Логика скрипта здесь такая - выполняется снизу вверх.

Это немного видоизмененный вариант функции с урока:
http://noregret.org/tutor/resize/


Последний раз редактировалось mooncar; 24.07.2009 в 19:01.
Старый 24.07.2009, 23:01
SeekerIU5 вне форума Посмотреть профиль Отправить личное сообщение для SeekerIU5 Найти все сообщения от SeekerIU5
  № 7  
Ответить с цитированием
SeekerIU5

Регистрация: Jul 2009
Сообщений: 6
Спасибо большое. Все таки повторю глупый вопрос(отдельной темы для него жалко): как обработать событие прекращения сскролллинга? Т.е. момент, когда пользователь прекратил перетаскивание ползунка?

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

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

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


 


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


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