@ BrianHodge: Как вы на самом деле используете свой пример? Как вы вызываете функцию set? Как вы относитесь к этому? Где передать переменную, которая будет изменена ..?
Скажем, если я хочу изменить обернутую переменную, например, нажатием кнопки.
Я должен признаться, что я пробовал некоторые другие коды и примеры (getter / setter) типа, с dispatchEvent
или без, и я не могу преодолеть это! Но ваш пример, кажется, именно то, что мне нужно, просто не могу заставить его работать.
Я получаю The model was instantiated
, когда устанавливаю функцию в качестве класса документа. Вот и все.
Наконец-то я узнал о таких людях, как я, которые теряют время из-за этой отправки!
В моем случае переменная _someVar
должна иметь тип данных String
(то же самое для fornewVal
).
OnceTestDocClass
установлен как класс вашего документа; Вы ссылаетесь на модель, созданную следующим образом:
_model.someVariable="new stuff";
Я пытался изменить значение следующим образом:
_model.someVariable("new stuff");
Вы можете добавить некоторые действия по трассировке в класс Model
, чтобы иметь четкую демонстрацию на панели вывода:
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class Model extends EventDispatcher
{
public static const VALUE_CHANGED:String = 'value_changed';
private var _someVar:String = "default";
public function Model():void
{
trace('The model was instantiated.');
}
public function set someVariable(newVal:String):void
{
trace ("before " + _someVar);
_someVar = newVal;
trace ("after " + _someVar);
this.dispatchEvent(new Event(Model.VALUE_CHANGED));
}
}
}
Это не так много, но некоторым людям это может стоить много времени =)