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

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

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

Регистрация: Mar 2009
Адрес: Москва [СЗАО]
Сообщений: 107
По умолчанию Удаление timer

День добрый. Не удаляется слушатель таймера по клику на объекте. Ошибка:
Код:
Line 235	1180: Call to a possibly undefined method removingAll.
Код AS3:
var timerPict:Timer = new Timer (1500);
 
function getM(e:Event):void
{	
	mc.addEventListener(MouseEvent.CLICK, mcClick);
	function mcClick(e:MouseEvent):void
	{
		removingAll();
	}
}
 
function callShow():void
{
	timerPict.addEventListener(TimerEvent.TIMER, onTimer);
	timerPict.start();
 
	function removingAll():void
	{
		timerPict.removeEventListener(TimerEvent.TIMER, onTimer);
	}
}
Пытался сделать так:
Код AS3:
var timerPict:Timer = new Timer (1500);
var flag:int = 0;
 
function getM(e:Event):void
{	
	mc.addEventListener(MouseEvent.CLICK, mcClick);
	function mcClick(e:MouseEvent):void
	{
		if (flag == 1)
		{
			removingAll();
		}
	}
}
 
function callShow():void
{
	flag = 1;
 
	timerPict.addEventListener(TimerEvent.TIMER, onTimer);
	timerPict.start();
 
	function removingAll():void
	{
		timerPict.removeEventListener(TimerEvent.TIMER, onTimer);
	}
}
Таже ошибка


Последний раз редактировалось niks_13; 06.05.2011 в 14:37.
Старый 06.05.2011, 14:38
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 2  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
У вас функция removingAll вложена в callShow, поэтому не видна на уровне класса, вынесите ее за скобки callShow

Старый 06.05.2011, 14:45
niks_13 вне форума Посмотреть профиль Отправить личное сообщение для niks_13 Найти все сообщения от niks_13
  № 3  
Ответить с цитированием
niks_13

Регистрация: Mar 2009
Адрес: Москва [СЗАО]
Сообщений: 107
Это я знаю, но вывести её нельзя, потому что onTimer ф-ция внутри callShow, а в ней объекты, существующие только в callShow.
Может есть какие-нибудь варианты посложнее, чем просто вывести?

Старый 06.05.2011, 14:52
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 4  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Есть вариант попроще - не писать вложенные функции. Это во-первых - дурной тон, а во-вторых это значит, что что то делаете через нескажукакоеместо. Пересмотрите структуру.

Старый 06.05.2011, 14:53
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 5  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Код AS3:
var timerPict:Timer = new Timer (1500);
var flag:int = 0;
var _removingAll : Function; 
function getM(e:Event):void
{	
	mc.addEventListener(MouseEvent.CLICK, mcClick);
	function mcClick(e:MouseEvent):void
	{
 
                if(_removingAll)_removingAll();
 
	}
}
 
function callShow():void
{
 
	timerPict.addEventListener(TimerEvent.TIMER, onTimer);
	timerPict.start();
 
	function removingAll():void
	{
		timerPict.removeEventListener(TimerEvent.TIMER, onTimer);
	}
        _removingAll = removingAll;
}
Можно попробовать как-то так.
Но, может, лучше побольше кусок просто покажете?

И.Да. Подписываюсь под предыдущим сообщением.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

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

Регистрация: Mar 2009
Адрес: Москва [СЗАО]
Сообщений: 107
Знаю, что не стоит делать столько вложенностей, по-другому пока никак не получается. Где возможно - не делаю.

ChuwY
Спасибо, заработало, но при компиляции ссылается на строчку:
Код:
 if(_removingAll)_removingAll();
и выдаёт:
Код:
Warning: 3553: Function value used where type Boolean was expected.  Possibly the parentheses () are missing after this function reference.
Хотя всё равно работает, но хотелось бы понять что компилятор от меня хочет.


Последний раз редактировалось niks_13; 06.05.2011 в 15:20.
Старый 06.05.2011, 15:21
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 7  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Он вас предупреждает, что возможно вы забыли скобки.
Код AS3:
if(Boolean(_removingAll))_removingAll();

Старый 06.05.2011, 15:28
niks_13 вне форума Посмотреть профиль Отправить личное сообщение для niks_13 Найти все сообщения от niks_13
  № 8  
Ответить с цитированием
niks_13

Регистрация: Mar 2009
Адрес: Москва [СЗАО]
Сообщений: 107
ChuwY
Простите, но больше кода показать не могу из-за определённых обязательств. Обещаю отладить вложенности насколько смогу =)

Bgg
Я понял, что он скобки от меня хочет просто не понял где). Спасибо.

Всем спасибо за помощь и объективную критику, всё заработало.


Последний раз редактировалось niks_13; 06.05.2011 в 15:31.
Старый 06.05.2011, 15:46
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 9  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Он от вас не хочет там скобок, он не понял что вы ему хотели сказать.

Старый 06.05.2011, 21:33
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Он предупредил, что скорее всего Вы забыли поставить скобки (). Это остерегает от очень неприятной опечатки, которую сложно найти.
Код AS3:
if (func is Function) func();

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

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

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


 


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


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