Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сделать перебирабельную структуру на основе Object с определенными переменными (http://www.flasher.ru/forum/showthread.php?t=125482)

Exey 25.05.2009 16:59

Сделать перебирабельную структуру на основе Object с определенными переменными
 
MyObject наследует Object
Код AS3:

package {
dynamic public class MyObject extends Object {
 
        public var name:String;
        public var desc:String;
        public var x:int;
        public var y:int;
 
        public function MyObject(data:Object) {
                for (var key:String in data) {
                        this[key] = data[key];
                        this.setPropertyIsEnumerable(key, true) // не помогает
                }
        }
}
}

конструктор MyObject принимает Object

Код AS3:

var key:String;
 
var obj:Object = {name: "house", desc: "big stone thing", x: 2, y: 3, customProperty: "yay!"}
var myObj:MyObject = new MyObject(obj)
 
for (key in obj) {
  trace("Object: "+ key+" - "+obj[key]);
}
 
for (key in myObj) {
  trace("MyObject: "+ key+" - "+myObj[key]);
}

вот трэйс

Код:

Object: customProperty - yay!
Object: desc - big stone thing
Object: x - 2
Object: name - house
Object: y - 3
MyObject: customProperty - yay!

Почему не перебираются определенные переменные в MyObject?

mre 25.05.2009 17:04

Потому что перебираются только динамические свойства.

Exey 25.05.2009 17:09

т.е. создать подобную структуру в AS3 невозможно :(

BlooDHounD 25.05.2009 17:10

describeType

Exey 25.05.2009 18:09

спасибо, удобная вещь ))
Код AS3:

<type name="MyObject" base="Object" isDynamic="true" isFinal="false" isStatic="false">
  <extendsClass type="Object"/>
  <constructor>
    <parameter index="1" type="Object" optional="false"/>
  </constructor>
  <variable name="x" type="int"/>
  <variable name="y" type="int"/>
  <variable name="desc" type="String"/>
  <variable name="name" type="String"/>
</type>



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

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