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

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

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

Регистрация: Jun 2011
Сообщений: 7
По умолчанию Увеличение по событию мыши и срабатывание по времени

Здравствуйте, уважаемые,
подскажите, пожалуйста, новичку - написала код для случая: курсор мыши подносится - картинка увеличивается, курсор отодвигается - картинка возвращается в первоначальное положение

Код AS3:
obj.addEventListener (MouseEvent.MOUSE_OVER, zooming);
function zooming (e:MouseEvent):void{
     obj.scaleX+=1;
     obj.scaleY+=1;
}
obj.addEventListener (MouseEvent.MOUSE_OUT, antizooming); 
function antizooming (e:MouseEvent):void{
     obj.scaleX-=1;
     obj.scaleY-=1;
}
Но увеличивается она не из центра, а как-то вбок, чего не хватает?

И совсем неодолимый вопрос - как сделать, чтобы процесс происходил в любом случае, даже если курсор не двигается. Например, через 7 сек бездействия мыши зум запускается автоматически, длится 3 сек и устраняется автоматически, снова на 7 сек. Подозреваю Timer, но что и куда?


Последний раз редактировалось Wolsh; 18.06.2011 в 15:24. Причина: теги
Старый 18.06.2011, 14:50
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Для оформления своего кода надо использовать теги [code][/code]
У картинки как и любого объекта на дисплее есть координаты, а именно координаты точки привязки, которая всегда находится в верхнем левом углу объекта. Высота и ширина увеличиваются только в положительную область - то есть вправо и вниз. Для имитации изменения размера из центра Вам придется также смещать картинку в отрицательную область на половину прироста размера.
Про Timer.. ну сначала в хелпе почитайте, потом спросите, что не получается конкретно.
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2011
Сообщений: 7
Спасибо, что так быстро.
Про теги поняла.
Про Timer имела ввиду - как программным языком поставить условие "Если мышь неактивна n сек, то..." Пошла читать хелп в любом слу

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
MouseEvent.MOUSE_MOVE - событие движения мыши. Соответственно когда не срабатывает - запускать таймер на n секунд, иначе сбрасывать.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

Регистрация: Jun 2011
Сообщений: 7
спасибо, теперь буду долго думать своим филологическим мозгом)

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

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
Справедливо для Flash IDE:
Точку привязки("псевдо") можно установить при создании объекта (одно из 9 положений).
Объект можно переместить оносительно точки привязки (ручками двигаете и все).
Масшатб работает во все стороны от точки привязки (как я понял, иде сама генерит ту часть кода, которая смещает "псевдоцентр" при всех преобразованиях.
Код AS3:
var myTimer:Timer = new Timer(1000, 0); /*создаем таймер с интервалом
 в 1000 миллисекунд и бесконечной цикличностью (0)*/
addTimer();
 
function addTimer() {
	myTimer.addEventListener(TimerEvent.TIMER, timerHandler); /*листенер,
который будет вызывать функцию timerHandler как только таймер отсчитает
 необходимое время*/
	myTimer.start(); //запускаем таймер
}
 
function removeTimer() {
/*вызов функции прекратиться при люом из этих 2х запросов,
но для экономии ресурсов, лучше вызвать оба*/
	myTimer.removeEventListener("timer", timerHandler);/*удаляем
листенер*/
	myTimer.reset();//сбрасываем счетчик на 0 и останавливаем
	таймер, иначе он будет продолжать в фоне*/
}
 
obj.addEventListener (MouseEvent.MOUSE_OVER, zoomIn);
obj.addEventListener (MouseEvent.MOUSE_OUT, zoomOut);
 
function zoomOut (e:MouseEvent):void{
	zoomObj('out');
	addTimer();/*добавляем таймер когда курсор
 покидает объект*/
}
 
 
function zoomIn (e:MouseEvent):void{
	removeTimer();/*удалаем таймер на время пока
 курсор над объектом*/
	zoomObj('in');
}
 
function zoomObj(zoomMode:String = 'out'):void{
	if(zoomMode == 'in'){
		obj.scaleX = obj.scaleY = 2;
	}else{
		obj.scaleX = obj.scaleY = 1;
	}
}
 
function timerHandler(event:TimerEvent):void {
/*считаем такты счетчика, и разбиваем их на интервалы по 10 (3 и 7 секунд),
 если их больше 3, то увеличиваем, в противном случае уменьшаем*/
	if(event.target.currentCount % 10 >= 3){
		zoomObj('in');
	}else{
		zoomObj('out');
	}
}
 
//пользуйтесь табом, его промежуток равен 4 пробелам (у большинства)
p.s.: простите если код немного кривой...думаю, более грамотные люди поправят
__________________
RTFM


Последний раз редактировалось S-ed; 19.06.2011 в 14:01. Причина: добавил комментарии
Старый 18.06.2011, 19:55
bestchetnova вне форума Посмотреть профиль Отправить личное сообщение для bestchetnova Найти все сообщения от bestchetnova
  № 7  
Ответить с цитированием
bestchetnova

Регистрация: Jun 2011
Сообщений: 7
ух ты, спасибо большое! сейчас буду разбираться

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Можно воспользоваться твинером каким-нибудь, чтобы не возиться с таймером.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 19.06.2011, 13:03
S-ed вне форума Посмотреть профиль Отправить личное сообщение для S-ed Найти все сообщения от S-ed
  № 9  
Ответить с цитированием
S-ed
 
Аватар для S-ed

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
GBee
Приведенный код не претендовал на грамотность. Да и код без использования классов... Но твинер требует отделных либ, или много кода.
__________________
RTFM

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
S-ed, к вашему коду претензий не имею (ну почти не имею), я просто предложил альтернативу. Хорошие дополнительные библиотеки много веса не прибавят, а работу могут ускорить и облегчить.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Теги
timer
Опции темы
Опции просмотра

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

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


 


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


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