Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   NO_SCALE для элементов из SWC (http://www.flasher.ru/forum/showthread.php?t=151640)

proxiServer 03.03.2011 11:56

NO_SCALE для элементов из SWC
 
Подключаю из swc элементы интерфейса. У них режим масштабирования по умолчанию, show_all то бишь. Как сменить на NO_SCALE? Пробовал в основном клипе, куда addChild-ом добавляются все элементы делать такое:

Код AS3:

private function addedToStage(e:Event):void {
        this.stage.scaleMode = StageScaleMode.NO_SCALE;
        scrollBarBackground.stage.scaleMode = StageScaleMode.NO_SCALE;
 
        bottomBtn.stage.scaleMode = StageScaleMode.NO_SCALE;
        topBtn.stage.scaleMode = StageScaleMode.NO_SCALE;
 
 
        scrollRectClip.stage.scaleMode = StageScaleMode.NO_SCALE;
        scrollRectTop.stage.scaleMode = StageScaleMode.NO_SCALE;
        scrollRectBottom.stage.scaleMode = StageScaleMode.NO_SCALE;
        scrollRectPatern.stage.scaleMode = StageScaleMode.NO_SCALE;
 
}

Почему не работает?

cleptoman 03.03.2011 13:21

потому что:
1 - все ваши stage указывают на один и тот же экземпляр класса Stage. он один одинешенек для всего приложения
2 - в вашем случае все scrollRectClip.stage могут возвращать null, если не добавлены на сцену.

proxiServer 03.03.2011 13:40

cleptoman, про stage это я на всякий случай)

Забыл написать, функция подписана на события addedToStage. Я думал будет понятно. Или все равно может быть null?

cleptoman 03.03.2011 13:56

а что должно быть понятно?..есть какойто обработчик какого-то события, которое где-то диспатчица)

in4core 03.03.2011 13:58

Цитата:

private function addedToStage(e:Event)
Ну мне кажется по этому должно было быть понятно нам ))

cleptoman 03.03.2011 14:14

вот если бы была строчка
Код AS3:

someDispatcher.addEventListener(SomeEvent.SOME_EVENT_TYPE,someHandler)

тогда да, было бы понятно..что, где и когда.

proxiServer 03.03.2011 14:22

Цитата:

в вашем случае все scrollRectClip.stage могут возвращать null, если не добавлены на сцену
Я меняю scaleMode на событие по добавлению на stage. Понятно должно было быть то, что все элементы присутствуют на сцене. Или я ошибаюсь? Может быть в этом и запряталась ошибка.

Я сначала создаю бъект. Он наследуется от спрайта и при создании накидывает как бы на свою собственную сцену элементы. Потом я вешаю обработчик ADDED_TO_STAGE из конструктора класса на this.

Код AS3:

     this.addEventListener(Event.ADDED_TO_STAGE,addedToStage);

А этот объект я уже добавляю где-то в другом месте. Как я предполагаю, событие сработает тогда, когда я этот элемент где-нибудь добавлю на сцену. Я правильно понимаю? Или же оно срабатывает когда я на его сцену что-то добавляют?

Цитата:

все ваши stage указывают на один и тот же экземпляр класса Stage. он один одинешенек для всего приложения
Почему же тогда у разных спрайтов могут быть разные режимы scaleMode? Если бы объект был один, то и режим масштабирования был бы один на всех, разве нет?

cleptoman 03.03.2011 14:26

Цитата:

у разных спрайтов могут быть разные режимы scaleMode
эт я понимаю, что у них могут быть эти свойства и значения в них могут быть разные, но вы речь ведете о другом scaleMode, который у сцены. ввиду этого факта я перестаю понимать что вам, все-таки, нужно )

Добавлено через 1 минуту
т.е.
Код AS3:

scrollBarBackground.stage.scaleMode != scrollBarBackground.scaleMode


Hidest 03.03.2011 14:35

Вот-вот, видно, у автора нет понимания, что scaleMode у stage работает на всю сцену целиком, и неважно, откуда у вас все на ней взялось, из swc или подгружена внешняя библиотека символов.

Скажите, что вы потом делаете с флешкой и какое поведение каких клипов вам не подходит,тогда может станет понятней.

И кстати, я что-то не помню, чтобы у Sprite было свойство scaleMode

proxiServer 03.03.2011 14:44

cleptoman, а как мне задать scalemode для клипа или спрайта? у них такого свойства нет.

Hidest, угу, сейчас расскажу подробней. В flashIDE были нарисованы элементы скролл бара. Далее их убрали в swc и эта библиотека подключена к проекту Flash Developer. Проблема в том, что когда я этот скрол закидываю - он работает нормально. Но если я меняю его размер тупо присваивая в height некое значение, то элементы скролбара начинают растягиваться или сжиматься под новое значение height. Я предположил, что у этих клипов установлен scalemode по умолчанию. И по видимому ошибочно считал, что sprite.stage.scaleMode меняет scaleMode конкретно этого спрайта. Вроде даже делал так.

Как тогда поменять scalemode у определенных элементов, а не у всей сцены?


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

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