2015-02-04 1 views
0

Я использую Flash CS6, AS3 для создания кнопок для моего проекта. Ниже мой код:Flash CS6 Button не работает Несмотря на отсутствие ошибок компилятора/вывода

Intro_btn.addEventListener(MouseEvent.MOUSE_DOWN, Intro_func); 
function Intro_func(event:MouseEvent):void { 
    gotoAndStop("Intro"); 
} 

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

+0

Может быть что угодно. У вас определенно есть рамка с надписью «Intro»? Является ли этот код определенно выполненным (приложенный прослушиватель событий)? Неужели нет ничего сидящего над верхней частью вашей кнопки (даже если она полностью прозрачна)? – Marty

+0

Да, у меня определенно есть рамка с надписью 'Intro'. Я переместил слой на второй верх (самый верхний слой был моим слоем ActionScript), так что это не должно быть проблемой. – 15leungjs1

+0

Попробуйте проверить, выполняется ли ваша функция 'Intro_func', добавив' trace ('something'); 'и попытайтесь использовать' gotoAndPlay («Intro»); '. – akmozo

ответ

0

я должен был бы знать больше информации вашего кода и типа кнопок, которые вы используете, но я хотел бы попробовать эти шаги:

1.- добавить компонент Button из инспекторе компонентов, установите его экземпляр имя, и добавить ту же самую функцию, чтобы замковое события:

newButton.addEventListener(MouseEvent.CLICK, Intro_func); 
    function Intro_func(event:MouseEvent):void { 
     trace("function executed"); 
     gotoAndStop("Intro"); 
} 

2.- запустить приложение и испытание, если действие выполняется с этой новой кнопки. Если этот тест пройдет, тогда ваша проблема будет вашей кнопкой.

проверить это на кнопку:

  • проверить базовый класс кнопки (быть уверен, что его MovieClip или класс Button)

  • проверить, если ваша кнопка включения/выключения.

  • проверить, есть ли у вашей кнопки или ее детей мышь. Используется и мыши. Дети установлены как true.

  • проверить, нет ли другого объекта поверх кнопки либо в вашей монтажной доске, либо добавлен кодом во время выполнения.

  • Я, наконец, предложил бы вам установить useHandCursor = true; это заменит стрелку указателя мыши рукой, когда вы перейдете через вашу кнопку (это просто проверка того, что ваша кнопка фактически взаимодействует с мышью).

надеюсь, что это поможет.

+0

Моя базовая группа кнопок определенно кнопка. Это простая кнопка, поэтому, когда я устанавливаю 'mousechildren' как true, я получил ошибку 1009 компилятора. Erm ... Я не знаю, как проверить, включена ли моя кнопка или отключена, но я не изменил ее настройки по умолчанию для моей кнопки. Моя кнопка находится на втором верхнем уровне (наивысший - AS3), и на нем нет кнопок. Насколько мне известно, код не добавляется во время выполнения. Я также попробовал «useHandCursor», и я получаю мышь всякий раз, когда мой указатель мыши нависает над кнопкой. Спасибо за вашу помощь! :) – 15leungjs1

+0

Вот ссылка на папку Dropbox, содержащую мой проект, если это поможет: https://www.dropbox.com/sh/jq9h5jhkmwvqrqo/AAAeGFSvlF2yDzU3bP2zzri9a?dl=0 – 15leungjs1

0

извините за задержку, но я нашел ваше решение. Это проще, чем вы думали: ваш кадр задерживается.

Ваш скрипт Intro_btn находится в кадре 10, однако в кадре, о котором вы говорите, подходит к кадру 9 (метка фрейма Erhu), поэтому действия по настройке прослушивателя событий никогда не вызываются.

Также имейте в виду следующее:

объекты существуют только в рамах жизни время, если у вас есть объект от кадра 5 до 10, она будет существовать только там, так что переход к предыдущей или более поздней версии кадра (например, кадры 4 и 11) будут внутренне удалять объект в памяти вместе со своими связанными действиями, по-английски:

вы поместили кнопку в кадре 10 и добавили своего слушателя MOUSE_DOWN, однако, вернитесь к кадру 0, поскольку кнопка не существует в этом фрейме, она будет удалена из памяти вместе со своими слушателями, поэтому, если вы перейдете от кадра 0 к любому другому кадру, отличному от 10, ваша кнопка никогда не будет связана с ее слушателями.

Поэтому мое предложение:

1.- добавить функцию в кадре 0:

function Intro_func(event:MouseEvent):void { 
    trace("function executed"); 
    gotoAndStop("Intro"); 
} 

2.- создать новый слой. В этом слое добавьте ключевой кадр в том же положении, где ваш Intro_btn (кадр 10), и заполните оставшуюся часть временной шкалы этого слоя пустыми кадрами (без ключевых кадров), наконец, на том же слое добавьте в кадр 10 ваш прослушиватель Intro_btn. addEventListener. таким образом, действие доступно для каждого кадра субсекумента из кадра 10.

надеюсь, что это решает вашу проблему.

+0

Спасибо, что нашли время, чтобы ответить! Однако, к сожалению, это действительно не работало, и никаких ошибок не появилось. Я добавил код в фрейм 1, а затем создал слой непосредственно под моим словом actionscript, преобразовал его кадр 10 в ключевой кадр и добавил 'Intro_btn.addEventListener (MouseEvent.CLICK, Intro_func);'. Есть ли что-то, что я делаю неправильно? – 15leungjs1