- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
[Embed(source="../../assets/dtmf/dtmf-0.mp3")]
[Bindable]
public var dtmf0 : Class;
// ...еще десяток звуков ...
[Embed(source="../../assets/dtmf/dtmf-star.mp3")]
[Bindable]
public var dtmfstar : Class;
private function clickHandler(key : String) : void {
var dtmf : Object = {
"0": dtmf0, "1": dtmf1, "2": dtmf2,
"3": dtmf3, "4": dtmf4, "5": dtmf5,
"6": dtmf6, "7": dtmf7, "8": dtmf8,
"9": dtmf9, "*": dtmfstar, "#": dtmfhash
};
var sound : Sound = new dtmf[key]() as Sound;
sound.play();
dispatchEvent(new DataEvent('dialpadKey', false, false, key));
}
Как говорится, от пыхи и от флеша не зарекаются... Вот и мне пришлось на пару-тройку дней связаться с флешем флексом.
Вот такой вот код я высрал написал сегодня ;)
strax 27.11.2013 13:53 # 0
defecate-plusplus 27.11.2013 13:56 # +2
wvxvw 27.11.2013 15:41 # +1
Ресурсы так лучше не встраивать, а вместо этого:
потому что это избегает зависимости от педереастической frameworks.swc в которой находятся *Asset классы (которые никому не нужны, но их до сих пор не выпилили из компилятора).
[Bindable] - лучше всего не использовать, как долгосрочное решение. Если что-то по-быстрому сделать, то ок, но в будущем это создает массу проблем с отладкой, наследованием, интроспекцией и т.д.
Соответственно, исходя из того, как встроены ресурсы, можно было бы избежать и создания dtmf переменной. Если брать мой пример выше, то создание нового звука было бы: new getDefinitionByName("SomeSound")(); На сколько я знаю, большинство редакторов на сегодняшний день предоставляют какую-нибудь автоматизацию встраивания ресурсов. Я в молодости даже плагин для этого написал: http://www.flasher.ru/forum/blog.php?b=187 FDT вроде как есть из коробки что-то, FlashDevelop - там сейчас по-моему есть тоже из коробки какой-то генератор (но он мне не нравился, когда последний раз пользовался).
Но советовал бы использовать: http://code.google.com/p/hxswfml/ - тут больше возможностей (но нет графического интерфейса).
ПС. Да, на сколько я знаю, dialpadKey не является встроенным DataEvent - в чем соль?
bormand 27.11.2013 16:24 # +1
Не, не только. Там еще RTMP и speex, ради которых все это дело и затевалось :)
> public class SomeSound extends Sound { ... }
> new getDefinitionByName("SomeSound")()
Спасибо, возьму на заметку.
> getDefinitionByName()
Возвращает класс по его имени?
> Если что-то по-быстрому сделать, то ок
Ну а так оно и есть, очень маловероятно, что этот проект сильно разрастется. В принципе, если не считать доводки дизайна, клиентскую часть я уже закончил. И из примера с интерфейсом в стиле "ёбаный пиздец, куда тут вообще тыкать?" оно превратилось в нечто вполне вменяемое и юзабельное ;)
> отладкой
Я дебажу по-старинке, через trace :))
> dialpadKey не является встроенным DataEvent - в чем соль?
Он выше в xml'ке объявлен ;) А в чем соль - я х.з. В примере так было... Я же на экшенскрипте пишу в лучших традициях индусов - пример/стековерфловочка/копипаста. Серьезно подходить к его изучению пока лениво, да и некогда...
bormand 27.11.2013 16:32 # 0
Хех, да у меня вообще спартанские условия: flex sdk, да сборочный скриптик. Ну и дебажный flash player, чтобы трейсы читать.
wvxvw 27.11.2013 17:47 # +1
Но если условия позволяют (не нужна современная версия плеера), то можно и отладчик запустить. ФлешДевелоп можно худо-бедно запустить из вайна, но интерфейс очень бажный, так что комфортной работы не будет. Есть такой проект: http://code.google.com/p/fb4linux/ ктото сделал доброе дело и таки доделал за адобовцев их работу. Я пользовался одно время, и, вполне терпимо было.
Писал для эмакса минимальный интерфейс к отладчику и проверку ошибок, но так давно ничего с этим не делал, что наверное оно уже не рабочее / я даже не помню, где оно находится.
getDefinitionByName - возвращает сущность (может быть класс, может быть функция, переменная, пространство имен, интерфейс).
Обычная практика объявлять типы событий вместе с классом события, т.е. например:
и использовать тогда уже как:
DataEvent - встроенное событие, и добавить в него новых констант - никак (и вообще тут оно как-то не в тему, это событие диспатчат всякие классы связаные с сетью, типа сокетов, стримов и т.п. Звук, может его диспатчить, если например, его загружают, и поток, который читает звуковые данные получил новую партию данных).
bormand 27.11.2013 18:11 # +1
Спасибо, переделаю ;)
> Звук, может его диспатчить
Ну тут его не звук диспатчит... Этот ивент кидается от нажатия на кнопочки номеронабирателя, которые заодно пищат DTMF'ками, чтобы юзеру привычно было. А выше уровнем его ловят, и либо добавляют к строке ввода, либо отправляют на сервер (если разговор уже идет).
kyzi007 29.11.2013 00:09 # +1
wvxvw 29.11.2013 00:19 # +1
Последний дебаговый плеер в Линуксе: 11.2, а текущая версия: 11.9, там уже куча всего поменялось. Кроме того, дебаговый плеер никогда таки нормально в 64-битной системе и не работал. Это всегда был 32-битный вариант, немного подправленый на скорую руку.
А, да, еще отладчик в ИДЕЕ пытается найти исходник, чтобы его показать в редакторе, когда на бряк попадает. Но если исходник сгенерирован (из MXML), то он его найти не может, ну и автор, очевидно, эту ситуацию не предусмотрел, а пользователям, как правило, только перезапуск остается.
kyzi007 29.11.2013 00:47 # +1
Где?
Ну а с плеером пичалька, и скаута нету. В общем совсем не платформа для флешеров.
wvxvw 29.11.2013 01:21 # +1
strax 27.11.2013 17:11 # +4
Stertor 27.11.2013 22:10 # +1
Даже страшно подумать, чем они там занимаются.
kyzi007 29.11.2013 00:54 # +1
strax 29.11.2013 13:51 # 0
guest 29.11.2013 15:53 # 0
Lure Of Chaos 27.11.2013 22:04 # +2
kyzi007 29.11.2013 00:10 # +2