Статті, які підпадають під теґ ‘setter’

getter/setter + (increment || decrement) = жук в компиляторе

пятница, май 30, 2008

Имеем переменную заданную с помощью get и set функций:

  1. var _num:Number = 0;
  2. function get num():Number
  3. {
    1. return _num;
  4. }
  5. function set num(value:Number):void
  6. {
    1. _num = value;
  7. }

Создаём ещё одну переменную:

var num2:Number = num++;

Получаем ошибку компиляции:

1067: Implicit coercion of a value of type void to an unrelated type Number.

Думаю получается вот так:

var num2:Number = set num(get num() +1);

А так как результат set num() равен void, то мы и получаем ошибку.

[MXML] Как сделать setter, который принимает числовое значение и значение в процентах?

понедельник, март 10, 2008

Вы никогда не задумывались как может setter (в mxml), например width, который принимает Number, может принимать значения вида ‘50%’?

А всё очень просто :) Существует метатег [PercentProxy], который как параметр принимает имя метода, который будет задействован, если значение будет задано в процентах.

Пример. Созданим класс FleasCatcher:

  1. package
  2. {
    1. import mx.containers.Canvas;
    1. public class FleasCatcher extends Canvas
    1. {
      1. [PercentProxy(”percentFleasCountInMyHead“)]
      1. public function set fleasCountInMyHead(value:Number):void
      1. {
        1. trace(”number: “+value);
      1. }
      1. public function set percentFleasCountInMyHead(value:Number):void
      1. {
        1. trace(”percent: “+value);
      1. }
    1. }
  3. }

Теперь мы можем написать так:

  1. <?xml version=”1.0″ encoding=”utf-8″?>
  2. <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” xmlns:local=”*”>
    1. <local:FleasCatcher fleasCountInMyHead=”1000” />
  3. </mx:Application>

Или так:

  1. <?xml version=”1.0″ encoding=”utf-8″?>
  2. <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” xmlns:local=”*”>
    1. <local:FleasCatcher fleasCountInMyHead=”99%” />
  3. </mx:Application>