Ozon.ru
Flash-MX.ru: Форум о Flash - Not logged in
Forum На главную Help Search Login
Previous Next Up Topic Flash CS3, Flash 8, Flash-MX 2004, Flex / Почему не работает? / проперть idMap в классе. (4280 hits)
- By Фасовщица Петрова (***) Date 16-10-06 10:20
Я что-то не пойму в чем фишка.
AS1 на стэйдже:
МинимизироватьПо высоте текста
   1
   2
   3
 
 TXML = new XML();
 trace(TXML.idMap)  ->> [type Object];


Пишем это же в конструкторе класса - категорическое undefined
МинимизироватьПо высоте текста
   1
   2
   3
   4
   5
   6
   7
   8
 
 class Pizdets {
  private  var TXML:XML;
   function Pizdets() {
     TXML = new XML();
     trace(TXML["idMap"]);
   }
 }


Я что-то пропустил?
Мо-мо-мо-мо-мммооооооооооозггг!
Parent - By Nox Noctis (hero) Date 16-10-06 11:21
вообще-то, насколько я вижу, и так и так получается undefined.

- свойство idMap доступно начиная с 8 версии
- объект idMap создается только тогда, когда есть что мапить.
МинимизироватьПо высоте текста
   1
   2
   3
   4
   5
   6
 TXML = new XML();
 trace(TXML["idMap"]); // undefined
 TXML.parseXML("<a />");
 trace(TXML["idMap"]); // undefined
 TXML.parseXML("<a id='1' />"); 
 trace(TXML["idMap"]); // [type Object]
http://vtulka.mybrute.com
Parent By Фасовщица Петрова (***) Date 16-10-06 11:39
Нокс, спасибо. Не обратил внимания, что мапил ХМЛ с обьектами. Сейчас буду разбираться.
Мо-мо-мо-мо-мммооооооооооозггг!
Parent - By Iv (*) Date 16-10-06 11:41
да, в случае, если возможны/требуются переходы на версии ниже,
можно заюзать вот такой метод чтобы не париться:
http://proto.layer51.com/d.aspx?f=1500
iv
Parent - By Фасовщица Петрова (***) Date 16-10-06 12:08
Можно. НО! Я не врубаюсь в чем фокус! Итак есть один класс который я только что написал:
МинимизироватьПо высоте текста
   1
   2
   3
   4
   5
   6
   7
   8
 
 class Pipec{
   public var TXML:XML;
   function Pipec() {
     TXML = new XML("<t id='123456789'><y id='5'/><e id=''><t>");
     trace(TXML["idMap"]);
   }
 }

И другой рабочий, который в конструкторе имеет абсолютно то же самое. Дословно. Плюс ряд методов, которые никак не вызываются.
В одном и томе же проекте экземпляр тестового класса - трейсит объект, а моего основного - андефайнед. Это что-то....
Мо-мо-мо-мо-мммооооооооооозггг!
Parent - By Фасовщица Петрова (***) Date 16-10-06 12:17 Edited 16-10-06 12:20
Оказывается:

trace(MainXML["idMap"]); - Object
trace("What? "+MainXML["idMap"]) - undefined.

А я то думал автоматическое приведение работает везде..... Вот оказывается где проблема оказалась!
Мо-мо-мо-мо-мммооооооооооозггг!
Parent By Nox Noctis (hero) Date 16-10-06 12:49 Edited 16-10-06 13:05
любопытно, я не обращал внимания, что idMap тоже мутант.

это такая же тема, как с объектом XMLNode.attributes или с тем, который возвращает метод TextFormat.getTextExtent()

такие объекты не имеют ссылок на родительский класс. хотя, казалось бы, ВСЕ классы должны наследовать по крайней мере от Object.

иллюстрация:
МинимизироватьПо высоте текста
   1
   2
   3
   4
   5
   6
 TXML = new XML("<a id='1' />");
 trace(TXML.firstChild.attributes); // [type Object]
 trace(TXML.firstChild.attributes+"!"); // undefined!
 
 trace(TXML.firstChild.attributes.__proto__); // undefined
 trace(TXML.firstChild.attributes.constructor); // undefined

при сложении аргументов разных типов делается автоматическое приведение их к одному типу - к строке или к числу, по ситуации.

в данном случае нужно привести к строке.
для этого используется метод toString() у приводимого объекта.

а у объектов XML.nodeName, XML.idMap и еще некоторых нет своего метода toString() и в добавок нет ссылок __proto__ и constructor, что не позволяет им использовать стандартный toString() класса Object.

такие бесформенные коробочки с данными без прошлого и будущего. :))

один вопрос только остается - как trace() умудряется сделать "[type Object]" когда мы трейсим объект idMap сам по себе. видимо внутренний механизм самого трэйса позволяет.

записка на память: http://flash-mx.ru/forum/topic_show.pl?tid=1186
http://vtulka.mybrute.com
Previous Next Up Topic Flash CS3, Flash 8, Flash-MX 2004, Flex / Почему не работает? / проперть idMap в классе. (4280 hits)
 

с 19.04.2006

Page created in 0.081s with 16 database queries.