Просмотр полной версии : Работа с объектом
Привет всем.
Подскажите пожалуйста как распечатать все свойства и методы нужного объекта в ActionScrip3? нужно вытянуть их названия.
У object ?
for (var i:String in myObject) {
trace(i);
}
да object
хм, методы я по ходу достал, а вот свойства не распечатались.
у объекта нет методов своих собственных, кроме:
hasOwnProperty, isPrototypeOf и propertyIsEnumerable, но все они не enumerable и поэтому приведенным выше способом вы достать их не сможете.
задачу сформулируйте корректнее.
for each (var c:String in myObject) {
trace(c);
}
получим значения свойств объекта.
Допустим я создам объект
var example:Object = new Object();
example.one=1;
example.two=2;
example.three=3;
как мне получить имена созданных свойств? one,two,three
Он по порядку пойдет по свойствам при trace();
По такому же порядку пойдет и по значениям свойств.
Я сделал
var example:Object = new Object();
example.one=1;
example.two=2;
example.three=3;
for each (var c:String in example) {
trace(c);
}
Получил
3
2
1
что мне сделать что-бы имена свойств получить?
что мне сделать что-бы имена свойств получить?
Ещё раз посмотреть второй пост в этой теме.
в первом цикле, что я написал получаем имена свойств.
во втором - значения этих свойств, в том же порядке, что и свойства в первом цикле.
сопоставить думаю не проблема.
так чет я тупанул.
работает если я создаю объект "руками"
var example:Object = new Object();
example.one=1;
example.two=2;
example.three=3;
если я создам объект из класса то уже почему-то не работает?
package example {
public class Two {
public var one:Number=1;
public var two:Number=2;
}
}
Из другого класса вызываю класс Two и пробую получить его свойства.
package example {
import flash.display.*;
public class One extends MovieClip {
public function One() {
var two=new Two();
for each (var i:String in two) {
trace(i); // ничего не выведет
}
//trace(two.one) покажет 1
}
}
}
почему?
и что за магические (i - имя свойства и с - значение свойства) в цикле for each. где про это почитать можно?
спасибо за помощь.
Они не магические, можно назвать как угодно. Для перечисления полей класса воспользуйтесь describeType.
describeType помог. спасибо )
Добавлено через 3 часа 48 минут
может кому пригодится
function debug_object(o:Object, show_all:Boolean):void {
import flash.utils.*;
var def:XML = describeType(o);
var props:XMLList = def..variable.@name;
if(show_all) props += def..accessor.@name;
for each (var prop:String in props) {
trace(prop + ": " + o[prop]);
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.