![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Порядок портирования классов определяестя следующим образом: вначале портируем классы, которые не требуют других классов проекта.
Затем переходим к тем классам, которые используют только портированные классы. Внутри классов действуем по этой же схеме: вначале портируем те функции, которые не используют других пользовательских функций, и затем переходим к функциям, которые используют уже портированные. Следуя этой логике, портирование классов начнем с Math2. Для этого откроем созданный нами пустой класс Math2, и рядом AS2 версию этого класса. Скопируем содержимое AS2 класса кроме первой и последней строки и вставим в тело AS3 класса. Оценим степень разрухи: всё не так уж и страшно. Явных ошибок FDT не нашел, только подсветил отсутствие или неверную типизацию. На этом этапе мы не будем приводить этот код в порядок, поскольку наши изменения могут повлиять на другие классы. Проделаем аналогичную операцию с остальными классами в папке svg. Класс String2, а его мы портируем вторым, также не доставил никаких хлопот. В классе PathToArray потребовалось только импортировать XMLNode: import flash.xml.XMLNode; Тестирование. На данном этапе мы не можем качественно протестировать соответствие кода стандартам AS3. Но минимальный тест всё-таки сделать необходимо. Поскольку класс PathToArray использует и Math2 и String2, то нам для теста достаточно создать экземляр такого класса для того, чтобы компилятор Flash сказал свое веское слово. Для того, чтобы создать экземпляр класса PathToArray нам потребуется посмотреть с какими параметрами он вызывается. С этой целью найдем исходный ZIP файл, распакуем его в папочку на рабочем столе, откроем класс PathToArray и добавим трейсы: public function PathToArray(svgNode:XMLNode, dCmds:Array) { trace(svgNode) trace("-----------") trace(dCmds) trace("=====================") .................. Теперь можем добавить тест. В классе SVGDisplayInFlash добавим метод testPathToArray: private function testPathToArray():void { const path:String = "<path fill='#ED1C24' d='M261.5,52.3c11.9,3.2-5.2,21,32.9,31.6C288.5,35.5,261.5,52.3,261.5,52.3z' />"; const foo:XMLDocument = new XMLDocument(path); new PathToArray(foo.firstChild, []); } Результатом компиляции станет ругань компилятора. При ближайшем рассмотрении видим, что нет ничего страшного: дважды он ругается на то, что Number не может быть undefined и несколько раз на дублирование объявления переменных. Это несложно исправить. В соответствующих местах заменяем проверку на равенство undefined на функцию isNaN: И удаляем лишние var в дублирующихся объявлениях переменных в классах SVGDisplayInFlash и Math2. Компилируем еще раз и убеждатемся в том, что компилятор не выдает ошибок. Если это так, то можем переходить к следующей части.
__________________
http://realaxy.com Последний раз редактировалось iNils; 20.12.2010 в 13:17. |
![]() |
Часовой пояс GMT +4, время: 21:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|