![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Вернемся к методу extractCommands.
Он всё еще великоват по размеру и его логика теряется во множестве условных операторов. К тому же метод содержит логически обособленные блоки, которые проще воспринимать отдельными методами. Для начала попробуем вынести блок if (hasFill). В строке, следующей за if (hasFill) добавим: C помощью CTRL+1 создадим метод и скопируем в него содержимое блока if до else. Закомментируем скопированный участок кода и из буфера обмена вставляем код в созданный метод. Далее по очереди проходим по подсвеченым ошибкам и решаем что делать. startColor - объявим локально. node - объявим аргументом функции и передадим node в вызове. thisColor - объявим локально. Далее заменим присвоение переменной fill значения на return. Заодно удалим участки else, поскольку они оказываются ненужными. В итоге получаем такой метод: private function getFill(node:XMLNode) : Fill { // parse for fill color specification // if a hex number is specified, startColor will be > 0 // if a color name is specified, startColor will be 0 var startColor:Number = getAttribute(node, "fill").indexOf("#") + 1; if (startColor == 0) { // name specified instead of color number var thisColor:Number = colors[getAttribute(node, "fill")]; // if (thisColor == undefined) { if (isNaN(thisColor)) { return new Fill(0, 0); // set invisible if undefined } return new Fill(thisColor, 100); } return new Fill(parseInt(getAttribute(node, "fill").substr(startColor, 6), 16), 100); } Сносим закомментированный код и этот участок кода превращается во вполне удобоваримый:
__________________
http://realaxy.com Последний раз редактировалось iNils; 20.12.2010 в 13:35. |
![]() |
Часовой пояс GMT +4, время: 00:39. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|