PDA

Просмотр полной версии : "Сложная кнопка". Как выполнить все требования?


Leoparda
23.04.2006, 01:29
Необходимо очень срочно сделать всего одну кнопку, но чтобы она работала строго так, как заявлено.
Кнопка должна:
1.Запускать/останавливать звук (запись голоса)
2.Изображать условную рожу статичной (определенного вида), когда звука нет, и динамичной, когда есть
3.При наведении на нее мыши, должна показывать статичную картинку, но отличную от времени молчания
4.При загрузке страницы звука (именно этого) быть не должно
5.Пользователь может нажимать сколько угодно раз на "пуск звука", при этом звучать должен один фрагмент, без эха и повторного запуска
6.Пользователь может включать/выключать неограниченное число раз. Звук при повторном пуске должен начинаться с начала.

Возможно, есть еще требования, о которых я забыла.

Как реализовано на данный момент:
Один слой, в нем два символа button. Внутри первого из них находится символ Muvie Clip, содержащий мувик с кривляющейся рожей (имитация мимики, пока убогая).

На сцену навешен код (на первом и пока единственном кадре)
melody = new Sound();
melody.attachSound("melody");
button_happyman.happyman.stop();

На кнопке номер 1 код:
on (press) {
button_happyman.happyman.play();
if (!melody.position) {
melody.start();
}
}

На кнопке номер 2:
on (press) {
button_happyman.happyman.stop();
melody.stop();
}

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

Очень мечтаю о незамедлительной помощи. Спасибо, что дочитали до конца ;)

Homo Sapiens
23.04.2006, 03:08
Ты не мечтай, а в Help загляни.
А так - ничего сложного.
1. Смотри хелп.
2. Пункт один + изменение картинки.
3. Событие onRollOver, onRollOut + пункт два.
4. Смотри пункт один.
5. Сделай флаговую переменную, при первом нажатии устанавливай значение, при каждом проверяй, установлено ли оно, и если да, то ни делай ничего. В конце звукового фрагмента сбрасывай её.
См. пункт 5.

Про то, что ты имеешь. Забей на button и используй MovieClip.
Читай хелп про события onPress, onRollOver, onRollOut -> не используй on(ClipEvent).

Leoparda
23.04.2006, 12:48
Я согласна, что мой вопрос профанский и мои познания во флеше и языке действительно минимальны - все, что успела изучить сама за последнее время. Дело в том, что мне надо это для диплома. Я бы с удовольствием обошлась без этого элемента, но руководитель настаивает, а помочь сам не может, тоже к хэлпу отсылает. Так случилось, что образование у меня чисто гуманитарное, а диплом абсолютно другой, компьютерный, со сложностями...
Если бы знала заранее во что ввязываюсь, не взялась бы ни в жисть! За последние три месяца я выслушала от всех своих друзей и родственников столько отсылок к хэлпу, что просто почти отчаялась получить помощь...

Homo Sapiens , не могли ли бы вы поподробнее... хэлп на английском, для меня это займет слишком много времени, ждут другие части этого же проекта.

Nox Noctis
23.04.2006, 13:26
нельзя клипы вкладывать в кнопку, иначе к ним будет нельзя обратиться обычным способом. если button_happyman - кнопка, а happyman - клип в ней, то обращение button_happyman.happyman работать не будет.

я сделал бы так:

1. создаём две _кнопки_, одну для остановки звука и одну для запуска. внутрь этих кнопок можно вложить всяких клипов для анимации состояний отжато-наведено-нажато.

2. вкладываем эти кнопки в _клип_, в два последовательных кадра. в первый кадр - кнопку для запуска звука, а во второй кадр - кнопку для остановки звука. клипу на сцене даём имя, например, container_mc.

3. на первой кнопке (для запуска) пишем
on (press) {
_root.melody.start();
this.gotoAndStop(2);
}
на второй кнопке (для остановки) пишем
on (press) {
_root.melody.stop();
this.gotoAndStop(1);
}

4. в руте (на главной линейке) пишем:
melody = new Sound(container_mc);
melody.attachSound("melody");
container_mc.stop();

вроде ничего не забыл... :)