![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2012
Сообщений: 10
|
Здравствуйте! Создаю тест для студентов. Возникла проблема при нажатии кнопок "Следующий" и "Предыдущий". Если после нажатия кнопки "Начать" с первого вопроса перейти сразу на 22-й (нажав на желтую кнопку "22"), то кнопки "Следующий"-"Предыдущий" перестают работать. А если пощелкать до пятого вопроса кнопкой "Следующий", а затем перейти на 22 вопрос желтой кнопкой "22", то кнопка "Предыдущий" работает, переходит на 21 вопрос, а вот кнопка "Следующий" уже перестает работать.
Прикладываю свою заготовку теста (на несовместимость некоторых моментов в самом тесте не обращайте внимания, данный тест уже второй, который я создаю. В первом тесте также есть этот косяк с кнопками "Следующий"-"Предыдущий") Заранее спасибо всем, кто поможет))) |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 10
|
Вой файл теста
|
|
|||||
|
Пожалуйста, указывайте версию Flash IDE, в которой создан fla файл. У меня в CS4 он не открылся. Чем в более ранней версии вы сохраните fla, тем больше людей смогут его открыть, и, соответственно, помочь.
|
|
|||||
|
Регистрация: Oct 2012
Сообщений: 10
|
а где посмотреть эту версию? У меня CS5. Я новичок, тесты - мое первое творение во Flash
|
|
|||||
|
Регистрация: Oct 2012
Сообщений: 10
|
Через сохранить как сохранила как документ CS4...
|
|
|||||
|
Регистрация: Jul 2011
Сообщений: 121
|
Слишком разбросан код. Если во втором кадре вы вешаете слушателей на кнопки перехода вперёд и назад, то при переходе на 22 кадр вы убираете с сцены кнопку перехода вперёд, и соответственно слушатель пропадет. Вместо этого вам нужно в 22 и 2 кадре менять свойство visible. Посмотрите в коде способ вешать слушателей на разные объекты.
Вот ваш подправленный fla.
__________________
for (year=0;year<life;year++) {birthday(year)} |
|
|||||
|
И снова здравствуйте
![]() Теперь и я столкнулся с проблемой пропажи слушателей при переходе с кадра на кадр. У меня не возникает вопроса как это исправить. У меня возникает вопрос "Почему?". Цитата:
P.S. Я смоделировал ситуацию: создал клип, состоящий из двух кадров (twoFrames). На первом кадре имеется дочерний клип с именем 'first', на втором – другой дочерний клип с именем 'second'. Происходит инициализация: twoFrames = new TwoFrames(); twoFrames.gotoAndStop(1); twoFrames.first.addEventListener(MouseEvent.CLICK, clickHandler); // Вот здесь, судя по всему, исчезает только что установленный // слушатель кликов по first twoFrames.gotoAndStop(2); twoFrames.second.addEventListener(MouseEvent.CLICK, clickHandler); addChild(twoFrames); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler); private function clickHandler(e:MouseEvent):void { trace(e.currentTarget.name); } private function keyHandler(e:KeyboardEvent):void { if (twoFrames.currentFrame == 1) twoFrames.gotoAndStop(2); else twoFrames.gotoAndStop(1); } Подобные исчезновения слушателей баг или фича? Добавлено через 7 минут И что более важно, происходит ли (как-нибудь скрытно) removeEventListener при переходе с кадра на кадр? Я пробовал трейсить результаты hasEventListener и они говорят о том, что слушателя нет. Но я все еще сомневаюсь, можно ли этим результатам верить. Добавлено через 30 минут Видимо исчезают не только слушатели, но и вообще все динамические свойства клипа. twoFrames.gotoAndStop(1); twoFrames.first.addEventListener(MouseEvent.CLICK, clickHandler); twoFrames.first.someProp = "Lalala"; twoFrames.gotoAndStop(2); twoFrames.second.addEventListener(MouseEvent.CLICK, clickHandler); twoFrames.second.someProp_2 = "Lalala 2"; private function keyHandler(e:KeyboardEvent):void { if (twoFrames.currentFrame == 1) { twoFrames.gotoAndStop(2); trace("<" + twoFrames.second.someProp_2 + ">"); } else { twoFrames.gotoAndStop(1); trace("<" + twoFrames.first.someProp + ">"); } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|