![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 11
|
Подскажите, как динамически создавать переменные классах?
Допустим, хочу, чтобы цикл создал (_parts) штук public переменных с именами ("_part"+i) Такое возможно? Массивы не подходят, т.к. переменные - строки по 15000 символов, целевой девайс загибается от таких массивов. Пробовал без классов - работал метод set(); |
|
|||||
|
Banned
[+5 15.02.09]
[++5 15.02.09] Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
|
Метод сет это тоже самое что = только древний. Класс нужно сделать динамическим тогда все будет работать.
|
|
|||||
|
Регистрация: Jul 2008
Сообщений: 11
|
Отлично, заработало, создаю в конструкторе, видны внутри класса. А как сделать их public?
И еще вопрос, разве можно как-то без set() создать переменную с неизвестным заранее именем? |
|
|||||
|
Modus ponens
|
Вам наооборот нужно делать финты ушами, чтобы сделать ваши переменные private - используя ASSetPropFlags... и то это все равно будет условность... в АС2 нету приватных переменных.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 11
|
В конструкторе:
Во флешке: Вывод: |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
class A { function setDinamicProperties() { for(var i=0;i<10;i++) this["dynamic_property"+i]=i; } } Даже более того:
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 03.03.2009 в 23:10. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 11
|
О, спасибо, через this[] заработало!
|
|
|||||
|
Banned
[+5 15.02.09]
[++5 15.02.09] Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
|
Цитата:
. Кроме того что нету приватных переменных)(Хотя внешне то они недоступны :/). dynamic class Lolth { public function Lolth() { } public function test(count:Number):Void { for (var i:Number = 0; i < count; i++) { this['variable' + i] = i; } } } var l:Lolth = new Lolth(); l.test(10); trace(l.variable1);//1 Действительно :/. Правда если он не динами компилятор будет недоволен. |
|
|||||
|
Modus ponens
|
Финт - сложный фокус с игральными картами, чтобы его сделать нужно одновременно двумя руками поменять карты в колоде так, чтобы остальные этого не заметили, сделать такой фокус ушами не возможно.
"Финты ушами" - значит, что то, что вы будете пытаться сделать в принципе не возможно, и при этом со стороны выглядит как очень трудноосуществимая задача. Вы можете попытаться осуществить вашу задачу и через Object.addProperty() и через Object.watch() и через Object.__resolve(), но в конечном счете вы все равно прийдете к выводу, что содать содать свойство не видимое вне класса в АС2 не возможно.
__________________
Hell is the possibility of sanity |
|
|||||
|
Banned
[+5 15.02.09]
[++5 15.02.09] Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
|
А если это будет getter. А в нем будет проверка равенства __proto__ и arguments.caller.__proto__?
. Хотя конечно метод можно будет вызвать. Но нельзя будет просто получить его значение. Да и в принципе никому это нинадо. Вот в питоне например тоже нету в принципе приватных переменных и ничего. Еще бы можно было незная имен переменных получать их, для тестов бы пригодилось. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|