Показать сообщение отдельно
Старый 15.06.2004, 06:56
dozen вне форума Посмотреть профиль Отправить личное сообщение для dozen Посетить домашнюю страницу dozen Найти все сообщения от dozen
  № 5  
dozen

Регистрация: May 2004
Адрес: Toronto, ON, Canada
Сообщений: 24
Разобрался.

Есть два вида ресайза -- в authoring time и в runtime. И рулятся эти ресайзы по-разному.

В authoring time Flash дергает метод setSize(w,h). Тот в стандартных компонентах запоминает размеры в __width и __height (именно так, с двумя подчеркиваниям) и сразу дергает size(). Эти же проперти возвращаются через width/height.

А вот в runtime никаких вызовов setSize() нет. Нет даже вызовов size(). Сразу идет draw(). И вот в draw надо брать значение ширины и высоты из width и height.

Таким образом, надо реализовать два метода -- size() и draw().

В size() брать значение ширины и высоты из width и height (а не _width и _height!), и ресайзить деток (если компонент -- дернуть у него setSize(), если мувик -- просто выставить _width/_height).

В draw рисовать себя.

Поскольку в runtime size не зовется (сразу), то из draw имеет смысл дернуть процедуру коррекции размера. Примерно так:

Код:
  private function size(Void):Void
  {
    super.size();
    resize(width,height);
    invalidate();
  }

  function resize(w:Number,h:Number):Void
  {
    this._bg._width = w;
    this._bg._height = h;
    this._arrow._width = w/2;
    this._arrow._height = h/2;
    this._arrow._x = w/2;
    this._arrow._y = h/2;
  }

  function draw():Void
  {
    resize();
    ...
__________________
dozen
http://dozen.ru