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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.05.2008, 03:04
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 1  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
По умолчанию Особенность вызова функции слушателя событий

писал сначала в своём компоненте:
Код:
dataBlockHead.addEventListener(MouseEvent.MOUSE_DOWN, mouseMoveHandler );
....

private function mouseMoveHandler(event:MouseEvent):void {
someFunciton(this, dataBlockHead, optDD);
}
потом решил сократить:
Код:
dataBlockHead.addEventListener(MouseEvent.MOUSE_DOWN, 
function (event:MouseEvent):void{
someFunciton(this, dataBlockHead, optDD);
}
);
после чего скрипт перестал работать...
выяснилось что во втором случае под this'ом воспринимается не сам компонент, а что-то другое (trace выдал [object global])
кто-нибудь может как-то прокоментировать?

Старый 04.05.2008, 03:16
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 2  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
ну во втором случае ты создаешь локальную функцию, зачем она ссылается на глобал, я не знаю...

Старый 04.05.2008, 10:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Pow R. Toc H., потому что не надо так сокращать. Вы таким сокращением добьетесь лишь того, что вообще отписаться от такого обработчика не сможете, не говоря уже о том, что случайно вызвав функцию подписки ещё пару раз, получите столько же новых обработчиков.

Mr. Fixit, предупреждаю последний раз: посты бессмысленного толка будут расценены как флейм. То, что ты не знаешь, почему анонимная функция ссылается на global, никого не интересует. Константировать факт создания анонимной функции автором темы тоже никакого смысла не приносит.


Последний раз редактировалось etc; 04.05.2008 в 10:43.
Старый 04.05.2008, 13:42
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 4  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
мне удобно использовать такое оформление в initApp(), когда я точно знаю что отписываться не придётся, использую простой скрипт в функции обработчика, также это даёт возможность не загромождать код функциями, вызывающимися один раз.

Старый 04.05.2008, 14:01
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Это «удобство» выливается в то, что приложение просто не работает.

Старый 04.05.2008, 15:01
me2 вне форума Посмотреть профиль Отправить личное сообщение для me2 Найти все сообщения от me2
  № 6  
Ответить с цитированием
me2

Регистрация: Jan 2008
Сообщений: 84
Ну элементарно же, ты this смотришь не в своём компоненте а в addEventListener, вот его зис и возвращает. Чтоб избежать такой фигни - нужно вначале синициализировать this в переменную.
Код:
var self=this
dataBlockHead.addEventListener(MouseEvent.MOUSE_DOWN, 
function (event:MouseEvent):void{
someFunciton(self, dataBlockHead, optDD);
}
);
Это как бы выход, но лучше слушать _етц.

Старый 04.05.2008, 15:33
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 7  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
спасиб.. наверное так и сделаю...

Старый 04.05.2008, 15:52
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
[оффтоп]хомяки пришли и в AS3[/оффтоп]

Старый 05.05.2008, 04:31
me2 вне форума Посмотреть профиль Отправить личное сообщение для me2 Найти все сообщения от me2
  № 9  
Ответить с цитированием
me2

Регистрация: Jan 2008
Сообщений: 84
вот я задумался, а нафига вообще зис передавать? используй внутренние функции.

Старый 05.05.2008, 09:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Вы сами себе за каким-то фигом начинаете создавать проблемы на пустом месте. Нравится — создавайте.

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

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

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


 


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


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