PDA

Просмотр полной версии : ключворд


VladBD
06.07.2007, 13:38
Здрасьте.
Flash 8.
Начал писать ключворд (очень полезная вещь для мозгов). Нужна помощь и советы.
1) поругайте код
2) нужно ли здесь usecodepage?
3) осталось сделать выбор букв в нижней строке. Хочу щелкать по цифре и колесиком выбирать букву (сделать отображение букв из fullabc - текущего алфавита без уже угаданных букв), и когда нажимаешь еще раз буква которая выбрана фиксируется и все перерисовывается.
Как еще можно сделать ? и как повесить эти обработчики на ячейки? здесь главный затык.
за ссылки на примеры тоже буду благодарен.
спасибо

файл не прикрепился вот ссылка fla (http://www.a-bd.ru/temp/qwe.zip)

Север
06.07.2007, 13:48
видимо в другой раздел. P.s. файл не прикрепил.

etc
06.07.2007, 14:17
1) Ужасен;
2) Никогда и нигде.

Ссылка исправлена на прямую, почему нельзя было этого сделать самому — непонятно.

VladBD
06.07.2007, 14:31
1) подскажи в чем ужас?
и как насчет вопроса №3

etc
06.07.2007, 14:34
Ответа на номер три не будет в силу ответа на первый. Ужасно — значит, что он непонятен, жуткие переводы строк, расположение кавычек, названия функций, переменных, объявления переменных дважды, множественные обращения через массив, что не только ухудшает производительность, но и читабельность, превращая код в китайскую газету.

Север
06.07.2007, 14:36
mmm... chineese newspaper. (HOMER)

VladBD
06.07.2007, 14:39
объявления переменных дважды - не помню такого, разве локальные
множественные обращения через массив - просто другого лучшего способа организовать это - не вижу...
буду менять значения массива - а функции перерисовывают данные из массива...
Nils - пятняшки как-то давал - они тоже через массив
интересует почему не работает вот эта строка
this['cell'+i].onRelease = sss();

etc
06.07.2007, 14:42
объявления переменных дважды - не помню такого, разве локальные
множественные обращения через массив - просто другого лучшего способа организовать это - не вижу...
Nils - пятняшки как-то давал - они тоже через массив
интересует почему не работает вот эта строка
this['cell'+i].onRelease = sss();
Локальные переменные надо объявлять один раз оператором var, а не двадцать раз в коде. Вместо множественных обращений достаточно создать ссылку на клип, потом обращаться по ссылке, а не сто раз копировать. А строчка не работает, потому что происходит не присвоение ссылки на функцию, а результат её выполнения.

VladBD
06.07.2007, 14:58
Вместо множественных обращений достаточно создать ссылку на клип
Так:var obj = this['cell'+i];
obj.text='bla-bla'

etc
06.07.2007, 14:58
Именно.

VladBD
06.07.2007, 15:09
а разве так память не будет расходоваться - это же доп. переменная...
и с функцией исправил - убрал () - теперь работает - но как мне узнать на какой клетке я нажал клавишу? можно ли как нить вытащить название мувика по которому щелкнул?

etc
06.07.2007, 15:11
Многократное прямое обращение через модификаторы доступа сожрет процессорного времени в разы больше.

Насчет функции — либо по this._name внутри функции, либо использовать расширенный Delegate (на форуме полно тем про него).

VladBD
06.07.2007, 15:32
обновил исходник - подправил с учетом твоих замечаний - глянь пож-та...
this._name пошла - теперь буду думать дальше...
спасибо.

iNils
06.07.2007, 16:36
Nils - пятняшки как-то давал - они тоже через массив
Это был не просто код, а сделанный под конкурс SWF <= 1024 байта, поэтому первоочередной задачей было сокращение конечного байт-кода, отсюда - использование приемов, которые я никогда и нигде применять не будут, но они дают преимущество в минимизации размеров swf.

VladBD
06.07.2007, 16:38
понял - спасибо... уже исправил, исходник обновил...
счас бьюсь над обработчиками событий выбора букв в кроссворде...

VladBD
09.07.2007, 12:16
вот результат выложил...
ключворд мозголом (http://www.a-bd.ru/temp/index.html)
жду нареканий :)