![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 7
|
Добрый день. Сложно даже сформулировать:
Есть объект Есть функция: Вызываю и разумеется получаю b==c а хочется a==c Как? Спасибо. P.S. Пока выкрутился так: myFunction(parent_a:Object,name_a:String):void{ var c:ArrayCollection = new ArrayCollection(); if(parent_a.hasOwnProperty(name_a)){ parent_a[name_a] = c; } } Но это как то криво. Последний раз редактировалось McRain; 27.09.2009 в 19:06. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 7
|
проше тогда сделать
Разумеется нужна универсальная функция и строка
просто для примера, там может стоять другой класс (причем разный).
Основной вопрос - как задать значение объекта имея только ссылку на объект? |
|
|||||
|
Modus ponens
|
Только проблема если у класса есть неизвестное количество аргументов. А вообще - зачем вам это нужно? Может можно вообще по-другому решить?
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 28.09.2009 в 03:31. Причина: Class -> factory |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 7
|
Цитата:
используется RemoteObject - во время вызова функции передается имя функции, объект, в котором находится функция, и объект, которому присвоится результат. Надоело каждый раз обрабатывать получение ответа и присваивание Решил убрать лишние функции и сразу в потомок RemoteObject передавать целевой объект и при обработке ResultEvent выполнять присваивание. Сделал было так: var classObject:Class; classObject = getDefinitionByName( getQualifiedClassName(event.result) ) as Class; if(classObject!=null){ destinationObject = event.result as classObject; } Надеюсь не слишком запутанно..(( Спасибо . |
|
|||||
|
Modus ponens
|
destinationObject это не ссылка на myObject.myArray, это ссылка на тот же объект, на который ссылался myObject.myArray до того, как вы ее переназначили. Если чесно, то не вижу, как такая конструкция упростит вашу задачу... возможно немного автоматизирует, но не упростит это точно. Вообще получить ссылку на сеттер нельзя, можно только на метод. Т.е. возможно, в вашем случае проще было бы передавать метод типа myObject.setMyArray
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 7
|
Функции была (и отчасти есть) возможность передавать, меня не устроило что, к примеру, если у моего объекта 20 переменных, то придется писать 40 функции обработки результата (ну или 20 если только обработку успешного получения). А если классов много - это вообще ужас.
Пока что описанный выше способ вполне устроил, поскольку при вызове самой функции отправки запроса на сервер( в некотором Gate, в котором и создается RemoteObject) просто указывается строка с именем именно той переменной, значение полученного ответа которой и нужно присвоить. public class MyObject{ public var id:int = 0; public var targetParam:Array; public var secondParam:String; public var byteParam:ByteArray; private function getMyParam():void{ gate.callRemote(this,"getMyParam","targetParam",resultFunc,faultFunc); } } теперь же (грубо) можно написать и никаких функций больше. Это существенно сокращает время. Но это - довольно кривой путь - и суть топика в том, чтобы передавать не строку "targetParam" а сам targetParam. Однако в RemoteObject, при обработке полученного от сервера ответа, я не могу присвоить targetParam ничего - я не его там вижу, а ссылку на него (или на объект, ссылкой на который он является - не суть важно). Что ж, оставлю тогда так, как есть, большое спасибо за помощь. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 7
|
Что то я не уловил идею.
Объекты сериализованны, но как это поможет изменить исходный объект по имеющейся ссылке? |
|
|||||
|
Modus ponens
|
Ну, если объекты сериализованы то при их получении плеер сам инициализирует все свойства, когда будет создавать новый объект нужного типа, т.е. не нужно будет их перебирать и присваивать самому.
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|