Передача функции получения или хитрый указатель в AS3 - PullRequest
0 голосов
/ 30 января 2010

Так что я знаю, что у as3 нет указателей, но я подумал, что может быть способ использовать переменные объекта в качестве указателей.

Сейчас я полагаюсь на передачу функции, которая получает функцию get, это не очень элегантное решение, например, такое:

myvar = function():int{return objectName.getVarValue};

Другой вариант - изменить все методы get и set на функции get и set или добавить их в дополнение к. Я мог бы также создать класс связывания, который просто хранит имя, но это просто большая головная боль.

Может ли кто-нибудь подтвердить для меня, что на самом деле нет способа получить современные значения переменной объекта, не делая ничего более сложного, чем это?


По сути, вовлечены три стороны, почти как MVC. Один из объектов - это контроллер, который сообщает, какое значение «представления» следует сопоставить с любым ключом данных. Представление немного тупое, как и данные / модель, поэтому все выполняется через контроллер и в последовательности, где эти события перекрываются. Поэтому я делегирую захват данных в ключ данных, определяя вначале все различные параметры, а позже я могу просто вызвать обновление и выбрать ключи данных, и они получат данные. сейчас у меня есть конструктор, связанный со значением через функцию, которую я создаю вот так

onUpdate:function():int{return objectName.getVarValue};

Это немного сложнее, но это суть. Во Flex вы можете связывать данные, но это гибкая вещь, а не AS3, и это не совсем указатель.

Я бы хотел, чтобы as3 мог просто делать указатели, может быть, в as4? Я подумал, что может быть способ получить геттер как функцию, о которой я не знал.

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

Я бы просто передал сам объект, так как ссылка ведет себя как указатель. Вы можете создать свою собственную привязку данных, используя динамические свойства. Когда вы хотите подключить свое представление к модели данных, контроллер создает привязку данных с объектом источника данных, а также имя свойства для привязки к источнику данных и имя свойства для привязки в представлении:

view.AddBinding(dataObjectName, "somePropertyOnObject", "propertyNameOnView");

Вы можете сохранить их в каком-то создаваемом вами классе Binding, и при каждом вызове AddBinding вы добавляете его в коллекцию, вероятно, следя за тем, чтобы для данного свойства propertyNameOnView не было дубликатов. Когда вам нужно ответить на событие обновления свойства объекта данных, вы делаете присвоение, как показано ниже, за исключением того, что вы берете строки из объекта Binding, возможно, перебирая всю коллекцию Bindings, чтобы выполнить полное обновление вид:

this["propertyNameOnView"] = dataObjectName["somePropertyOnObject"];

Но больше похоже на связующий объект:

someBinding.DestinationObject[someBinding.DestinationProperty] = 
  someBinding.DataSource[someBinding.SourceProperty];

Вы могли бы даже поместить этот код непосредственно в сам объект Binding, предоставляемый через метод Update, чтобы просто вызывать Update () для конкретной привязки, и он переносил данные из свойства модели данных в свойство вашего представления.

Это небольшая информация о динамических свойствах, с которых можно начать, если вы не знакомы с ними: http://www.colettas.org/?p=17

0 голосов
/ 30 января 2010

способ получения актуальных значений переменная объекта -Daniel

Не совсем понятно, чего вы хотите достичь. Может быть, если вы сможете объяснить, почему это не соответствует вашим требованиям?

myvar = return objectName.getVarValue;
0 голосов
/ 30 января 2010

Почему бы просто не ударить объект за значение? Зачем хранить в другой переменной, если вы не хотите конкретное значение в определенное время?

...