Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Структура написания приложения (http://www.flasher.ru/forum/showthread.php?t=197609)

Babylon 13.04.2013 18:47

Цитата:

Сообщение от Александр Мостовой (Сообщение 1129686)
С xml работать впринципе можно как с быстрым промежуточным вариантом, но только если следовать правилу: изменять его только через методы и сеттеры соотвтетствующего объекта-хранителей этого XML.
Тогда не сложно будет в случае необходимости перейти на более формализованную структуру.

Насчет сеттеров и геттеров. XML вообще должен "торчать" только из модели. Во всех остальных случаях должна быть инкапсуляция. XML может и избыточен в описании, но он с лихвой перекрывает избыточность кодирования другими способами.

Psycho Tiger 14.04.2013 12:54

Цитата:

Сообщение от Babylon (Сообщение 1129637)
Psycho Tiger,
var xml=<screens>
<screen id="1" name="gameScreen"/>
<screen id="2" name="loadScreen"/>
</screens>
var screen:XMLList=xml.screen.(@id=='1').

Ну в принципе да, но это бесполезно если не подразумевается загрузка отдельных экранов через разные swf, например.
Ну, то есть, если этот XML вшивать в флешку – получим ряд проблем. Например, никто не гарантирует уникальность ID'шника (он может не существовать, а может существовать аж 2), проблемы из за рефлекшена (в моём примере мы жестко ссылаемся на класс – мистайп контроллируется компилятором, в XML – строки).

У меня вообще отношение к XML'у весьма своеобразное. e4x одновременно и тащит, и требует особой внимательности. Достаточно часто и обидно падаю по RTE из за несовпадения XML / XMLList типов. По идее, это должно контроллироваться компилятором – почему он не контроллирует – не понятно...
Вообще, например, в Ruby такими штуками являются YAML файлы. Что то вроде HAML'a для XML'a, например
Код:

key1:
  key2:
    value1: 'hello'
    value2: 'world'

Подобная штука для флеша на каком-нибудь нативном уровне была бы просто чудесна. XML действительно избыточен, в 2 из 3 случаев уместнее использовать что - то такое. Некоторый Object, который удобоварим для чтения-заполенения.

Babylon 15.04.2013 00:54

XMLList это список xml нод, а XML - это xml нода. Компилятор здесь не при делах. Он определяет несоответствие типов, и делает абсолютно корректно.
E4X появился только в AS3. До этого были костыли типа XMLtoOutput , XML2Object и др. Поэтому появление в стандарте XMLList было ожидаемо. XML в первую очередь нужен для агрегации и запросов. На JSON агрегацию также технично не сделаешь, а jQuery для AS тоже нет, в отличии от XPath

caseyryan 15.04.2013 07:24

Цитата:

По идее, это должно контроллироваться компилятором - почему он не контроллирует – не понятно...
Потому что не знает он, что туда попадет в рантайме, будет это XML или XMLList ему по барабану

Babylon 15.04.2013 09:40

Я просто не представляю как еще компилятор должен обработать данную ситуацию, иначе чем выдать ошибку о не соответствии типов.

Psycho Tiger 15.04.2013 11:34

Цитата:

Сообщение от Babylon (Сообщение 1129892)
Я просто не представляю как еще компилятор должен обработать данную ситуацию, иначе чем выдать ошибку о не соответствии типов.

Цитата:

Потому что не знает он, что туда попадет в рантайме, будет это XML или XMLList ему по барабану
XMLList может состоять и из одной ноды ) Поэтому это компилятор и должен контроллировать.
Это никогда не будет XML
Код:

root.node // XMLList
root.(@id == 'attr') //XMLList

А это никогда не будет XMLList'ом
Код:

root.node[0] //XML

Babylon 15.04.2013 11:53

Компилятор же выдает предупреждение о неправильном кол-ве элементов.

Simplifier 15.04.2013 21:32

Так XML и XMLList же динамические классы, поэтому компилятор тут вообще не при делах, по идее

namespaces 16.04.2013 00:27

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

Psycho Tiger 16.04.2013 09:46

Цитата:

Сообщение от Babylon (Сообщение 1129910)
Компилятор же выдает предупреждение о неправильном кол-ве элементов.

Хм. Ну у меня в стрикте не выдаёт :(


Часовой пояс GMT +4, время: 11:36.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.