PROCESSOR_ARCHITECTURE=x86
Появится на Win32, а для Win64 появится
PROCESSOR_ARCHITECTURE=AMD64
.
Если вы извращаете 32-битный cmd.exe
процесс, то Windows представляет две переменные среды:
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=AMD64
Не бойтесь MXML. Это является большим для разметки представлений. Если Вы пишете свое собственное допускающий повторное использование , компоненты, затем пишущий им в ActionScript могут иногда давать Вам, немного больше управления, но для представлений одноразового использования MXML намного лучше. Это более кратко, привязка extemely легкий настроить, и т.д.
Однако, привязка в чистом ActionScript не должна быть так большой частью боли. Это никогда не будет столь же просто как в MXML, где много вещей сделано для Вас, но это может быть сделано с не слишком много усилия.
то, Что Вы имеете, BindingUtils
, и это - методы bindSetter
и bindProperty
. Я почти всегда использую первого, так как я обычно хочу сделать некоторую работу или вызов invalidateProperties
, когда значения изменяются, я почти никогда просто не хочу установить свойство.
то, Что необходимо знать, - то, что эти два возвращают объект типа ChangeWatcher
, если Вы хотите удалить привязку по некоторым причинам, необходимо держаться за этот объект. Это - то, что делает ручную привязку в ActionScript немного менее удобной, чем те в MXML.
Позволяют нам запуститься с простого примера:
BindingUtils.bindSetter(nameChanged, selectedEmployee, "name");
Это настраивает привязку, которая назовет метод nameChanged
когда name
свойство на объекте в переменной selectedEmployee
изменения. nameChanged
метод получит новое значение name
свойство как аргумент, таким образом, это должно будет быть похожим на это:
private function nameChanged( newName : String ) : void
проблема с этим простым примером состоит в том, что, как только Вы настроили эту привязку его, запустит каждый раз свойство указанных объектных изменений. Значение переменной selectedEmployee
может измениться, но привязка все еще настраивается для объекта, на который переменная указала прежде.
существует два способа решить это: любой для хранения эти ChangeWatcher
возвращенным [1 116] вокруг и вызов unwatch
на нем, когда Вы хотите удалить привязку (и затем установка новая привязка вместо этого) или связать с собой. Я покажу Вам вариант преимущественной покупки сначала, и затем объясню, что я подразумеваю под привязкой к себе.
Эти currentEmployee
мог быть превращен в пару метода get/метода set и реализован как это (только показ метода set):
public function set currentEmployee( employee : Employee ) : void {
if ( _currentEmployee != employee ) {
if ( _currentEmployee != null ) {
currentEmployeeNameCW.unwatch();
}
_currentEmployee = employee;
if ( _currentEmployee != null ) {
currentEmployeeNameCW = BindingUtils.bindSetter(currentEmployeeNameChanged, _currentEmployee, "name");
}
}
}
то, Что происходит, - то, что, когда currentEmployee
свойство установлено, оно надеется видеть, было ли предыдущее значение, и раз так удаляет привязку для того объекта (currentEmployeeNameCW.unwatch()
), то оно устанавливает частную переменную, и если новое значение не было null
, настраивает новую привязку для name
свойство. Самое главное это сохраняет эти ChangeWatcher
возвращенный обязательным вызовом.
Это - основной обязательный шаблон, и я думаю, что он хорошо работает. Существует, однако, прием, который может использоваться для создания его немного более простым. Можно связать с собой вместо этого. Вместо того, чтобы настроить и удалить привязку каждый раз currentEmployee
изменения свойства у Вас может быть обязательная система, делают это для Вас. В Вашем creationComplete
обработчик (или конструктор или по крайней мере некоторое время рано) можно настроить привязку как так:
BindingUtils.bindSetter(currentEmployeeNameChanged, this, ["currentEmployee", "name"]);
Это настраивает привязку не только к currentEmployee
свойство на [1 127], но также и к name
свойство на этом объекте. Таким образом, в любое время любой изменения метод currentEmployeeNameChanged
назовут. Нет никакой потребности сохранить ChangeWatcher
, потому что привязка никогда не должна будет удаляться.
второе решение работает во многих случаях, но я нашел, что первый иногда необходим, особенно при работе с привязкой в классах непредставления (так как this
должен быть диспетчер события, и эти currentEmployee
должно быть связываемым для него для работы).
Один способ разделить MXML и ActionScript для компонента в отдельные файлы путем выполнения чего-то подобного ASP.NET 1.x код позади модели. В этой модели декларативная часть (MXML в этом случае) является подклассом обязательной части (ActionScript). Таким образом, я мог бы объявить код позади для класса как это:
package CustomComponents
{
import mx.containers.*;
import mx.controls.*;
import flash.events.Event;
public class MyCanvasCode extends Canvas
{
public var myLabel : Label;
protected function onInitialize(event : Event):void
{
MyLabel.text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.";
}
}
}
... и разметка как это:
<?xml version="1.0" encoding="utf-8"?>
<MyCanvasCode xmlns="CustomComponents.*"
xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="onInitialize(event)">
<mx:Label id="myLabel"/>
</MyCanvasCode>
, Как Вы видите от этого примера, disadvatage этого подхода - то, что необходимо объявить средства управления как myLabel в обоих файлах.
существует способ, которым я обычно использую для использования mxml и сценария действия вместе: Все мои компоненты MXML наследовались классу сценария действия, где я добавляю более сложный код. Затем можно обратиться к слушателям события, реализованным в этом классе в mxml файле.
С уважением,
Ruth