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

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

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

Регистрация: Apr 2011
Сообщений: 7
По умолчанию Проблема с gotoAndStop

Столкнулся с такой проблемой: на 1 кадре нажимаю "влево" - переходит на кадр 2, потом "вниз" переходит назад на первый кадр, а потом нажимая на первом кадре "вверх" он переходит на кадр 3, а не 10. Подскажите, пожалуйста, где моя ошибка.
действия первого кадра:
Код AS3:
stop ();
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardF);
 
function keyboardF (e:KeyboardEvent):void {
 
if (e.keyCode == Keyboard.LEFT)
gotoAndStop (2);
if (e.keyCode == Keyboard.UP)
gotoAndStop (10);
}
действия второго кадра:
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboard);
 
function keyboard (e:KeyboardEvent):void {
 
if (e.keyCode == Keyboard.DOWN)
gotoAndStop (1);
if (e.keyCode == Keyboard.UP)
gotoAndStop (3);
}

Старый 08.04.2011, 23:46
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ваша ошибка в том, что вы не удаляете событие, а нагромождаете их.
И не пишите в кадрах, а если уж пишите то

Код AS3:
stop ();
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyboardF);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardF);
 
function keyboardF (e:KeyboardEvent):void {
 
if (e.keyCode == Keyboard.LEFT)
gotoAndStop (2);
if (e.keyCode == Keyboard.UP)
gotoAndStop (10);
}
Код AS3:
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyboard);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboard);
 
function keyboard (e:KeyboardEvent):void {
 
if (e.keyCode == Keyboard.DOWN)
gotoAndStop (1);
if (e.keyCode == Keyboard.UP)
gotoAndStop (3);
}

Старый 08.04.2011, 23:51
toten вне форума Посмотреть профиль Отправить личное сообщение для toten Найти все сообщения от toten
  № 3  
Ответить с цитированием
toten

Регистрация: Apr 2011
Сообщений: 7
Большое спасибо!

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

Регистрация: May 2010
Сообщений: 543
Цитата:
на 1 кадре нажимаю "влево" - переходит на кадр 2, потом "вниз" переходит назад на первый кадр, а потом нажимая на первом кадре "вверх" он переходит на кадр 3, а не 10. Подскажите, пожалуйста, где моя ошибка.
Еще одна задача из области квантовой физики)

Старый 09.04.2011, 00:25
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
не стесняемся плюсуем)

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

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

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

Регистрация: Sep 2002
Сообщений: 30,784
in4core не знает, что один и тот же обработчик дважды не подписывается.

Старый 09.04.2011, 12:44
toten вне форума Посмотреть профиль Отправить личное сообщение для toten Найти все сообщения от toten
  № 8  
Ответить с цитированием
toten

Регистрация: Apr 2011
Сообщений: 7
Сделал так как посоветовал in4core, но вылезла еще одна проблема. Запускаю просмотр, перехожу стрелкой "влево" из кадра 1 во 2, во втором нажимаю "вправо" и он переходи на кадр 6, хотя во втором кадре такого действия у меня нет. Подскажите, пожалуйста.
действия первого кадра:
Код AS3:
stop ();
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyboardF);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardF);
 
function keyboardF (e:KeyboardEvent):void {
 
if (e.keyCode == Keyboard.LEFT)
gotoAndStop (2);
if (e.keyCode == Keyboard.UP)
gotoAndStop (10);
if (e.keyCode == Keyboard.RIGHT)
gotoAndStop (6);
}
действия второго кадра:
Код AS3:
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyboard);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboard);
 
function keyboard (e:KeyboardEvent):void {
 
if (e.keyCode == Keyboard.DOWN)
gotoAndStop (1);
if (e.keyCode == Keyboard.UP)
gotoAndStop (3);
}

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Пишите все в первом кадре.
Код AS3:
stop ();
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownListener);
function onKeyDownListener(event:KeyboardEvent):void
{
	if(currentFrame == 1)
	{
		if (event.keyCode == Keyboard.LEFT)
			gotoAndStop(2);
		if (event.keyCode == Keyboard.UP)
			gotoAndStop(10);
	}
	else if(currentFrame == 2)
	{
		if (event.keyCode == Keyboard.DOWN)
			gotoAndStop (1);
		if (event.keyCode == Keyboard.UP)
			gotoAndStop (3);
	}
}

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

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
если же хотите писать как писали, то исправьте во втором кадре:

Код AS3:
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyboard);
на

Код AS3:
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyboardF);
смысл ошибки в том, что вы отписываетесь от события прежде, чем подписаться на него, в то время, как вам надо отписать слушателя в предидущем кадре. Посмотрите внимательно.


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

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

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


 


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


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