Если вы чувствуете, что набирать this.buttonExample
снова и снова слишком сложно, просто назначьте этот объект переменной и используйте эту переменную в остальных операторах:
var b : Button = this.buttonExample;
b.buttonMode = true;
b.useHandCursor = true;
b.addEventListener(...);
Как уже упоминалось, есть также оператор with
, но его использование не рекомендуется, поскольку это затрудняет чтение кода и может привести к странным результатам:
with (this.buttonExample) {
buttonMode = true;
useHandCursor = true;
addEventListener(...);
}
Вы можете, конечно, комбинировать эти предложения с другими приемами, такими как цепочка заданий:
var b : Button = this.buttonExample;
b.buttonMode = b.useHandCursor = true;
b.addEventListener(...);
Будьте очень осторожны, чтобы присваивать цепочки таким образом только в том случае, если назначенное значение является неизменяемым (например, true
, false
, числа и строки, но не массивы или большинство других объектов), потому что один и тот же объект будет назначен всем переменным с левой стороны. Если значение неизменно, это не имеет значения, но если оно изменчиво, вы можете получить странные результаты, как в этом примере:
a = b = [ ];
a.push(1);
b.push(2);
trace(a); // outputs 1, 2
trace(b); // also outputs 1, 2
Причина такого результата заключается в том, что a
и b
ссылаются на один и тот же массив, а поскольку массивы изменяемы, не имеет значения, как вы обращаетесь к объекту, он все равно будет изменен. a
и b
не ссылаются на разные массивы только потому, что это разные переменные.
Вы можете подумать, что можете сделать что-то вроде следующего, но это не сработает.
// this will NOT work
var b : Button = this.buttonExample;
(b.buttonMode = b.useHandCursor = true).addEventListener(...);
Причина, по которой можно сказать b.buttonMode = b.useHandCursor = true
, но не добавить .addEventListener(...)
, заключается в том, что значением выражения присваивания (например, b.buttonMode = true
) является значение, присвоенное левой части (например, true
). Если вы добавите к этому .addEventListener(...)
, вы, по сути, скажете true.addEventListener(...)
, что явно не то, что вам нужно. Другими словами
b.buttonMode = b.useHandCursor = false;
эквивалентно
b.useHandCursor = false;
b.buttonMode = b.useHandCursor;
Что, мы надеемся, также должно сделать предостережения, упомянутые выше, понятными.
person
Theo
schedule
07.05.2010