Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отследить изменение размера объкта (http://www.flasher.ru/forum/showthread.php?t=128249)

TanaTiX 03.08.2009 15:00

Отследить изменение размера объкта
 
Как отследить изменение размера объекта, создаваемого с размерами, реагирующими на изменение размера сцены. Просмотрел класс Event, погуглил, но то ли пропустил, то ли не нашел. Заранее спасибо.

Dimax4d 03.08.2009 15:22

Event.RESIZE?

TanaTiX 03.08.2009 15:23

Dimax4d, пробовал, никакой реакции...

Dimax4d 03.08.2009 15:24

Я его на stage вешал, с ней работает

TanaTiX 03.08.2009 15:27

Dimax4d, на stage-е и у меня работает, как-никак объект-то резиновый... А вот как в отношении обычного объекта...
Да и вообще. Можно ли как-то отследить изменение значения какой-либо переменной?

Dimax4d 03.08.2009 15:30

может вам тогда переопределить геттер и сеттер на свойства width и height так, чтобы они генерировали событие при изменении?
сам не пробовал, но вдруг...

TanaTiX 03.08.2009 15:32

Dimax4d, а можно подробней? Примерчик элементарный или ссылку?

Dimax4d 03.08.2009 15:32

Сейчас попробую сам закодить, о результатах отпишусь

wvxvw 03.08.2009 15:41

Флешевые дисплей-объекты не диспатчат никаких событий когда вы меняете им размеры, для того, чтобы такие события получать, вам нужно будет отнаследоваться от какого-нибудь наследника DisplayObject и переписать ему свойства width, height, scaleX, scaleY, scrollRect. К сожалению, если вы поменяете размеры через DisplayObject#transform.matrix или используя API для рисования, то отследить изменения размеров вам не удасться.

Dimax4d 03.08.2009 15:46

Код AS3:

package {
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class MySprite extends Sprite
        {
                public function MySprite()
                {
                        super();       
                }
 
                override public function set width(value:Number):void {
                        super.dispatchEvent(new Event(Event.RESIZE));
                        super.width = value;
                }       
        }
}

Но это работает только при прямом изменении ширины. Если меняется размер родителя, то ничего не происходит


Часовой пояс GMT +4, время: 16:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.