![]() |
NO_SCALE для элементов из SWC
Подключаю из swc элементы интерфейса. У них режим масштабирования по умолчанию, show_all то бишь. Как сменить на NO_SCALE? Пробовал в основном клипе, куда addChild-ом добавляются все элементы делать такое:
Код AS3:
|
потому что:
1 - все ваши stage указывают на один и тот же экземпляр класса Stage. он один одинешенек для всего приложения 2 - в вашем случае все scrollRectClip.stage могут возвращать null, если не добавлены на сцену. |
cleptoman, про stage это я на всякий случай)
Забыл написать, функция подписана на события addedToStage. Я думал будет понятно. Или все равно может быть null? |
а что должно быть понятно?..есть какойто обработчик какого-то события, которое где-то диспатчица)
|
Цитата:
|
вот если бы была строчка
Код AS3:
|
Цитата:
Я сначала создаю бъект. Он наследуется от спрайта и при создании накидывает как бы на свою собственную сцену элементы. Потом я вешаю обработчик ADDED_TO_STAGE из конструктора класса на this. Код AS3:
Цитата:
|
Цитата:
Добавлено через 1 минуту т.е. Код AS3:
|
Вот-вот, видно, у автора нет понимания, что scaleMode у stage работает на всю сцену целиком, и неважно, откуда у вас все на ней взялось, из swc или подгружена внешняя библиотека символов.
Скажите, что вы потом делаете с флешкой и какое поведение каких клипов вам не подходит,тогда может станет понятней. И кстати, я что-то не помню, чтобы у Sprite было свойство scaleMode |
cleptoman, а как мне задать scalemode для клипа или спрайта? у них такого свойства нет.
Hidest, угу, сейчас расскажу подробней. В flashIDE были нарисованы элементы скролл бара. Далее их убрали в swc и эта библиотека подключена к проекту Flash Developer. Проблема в том, что когда я этот скрол закидываю - он работает нормально. Но если я меняю его размер тупо присваивая в height некое значение, то элементы скролбара начинают растягиваться или сжиматься под новое значение height. Я предположил, что у этих клипов установлен scalemode по умолчанию. И по видимому ошибочно считал, что sprite.stage.scaleMode меняет scaleMode конкретно этого спрайта. Вроде даже делал так. Как тогда поменять scalemode у определенных элементов, а не у всей сцены? |
Ну так а что вы хотите от скролла-то, если вы просто меняете размеры всего спрайта-оболочки этого скролла... Автоматом этого сделать нельзя, нет никаких волшебных scaleMode для вашего случая. Надо оверрайдить сеттер height и в нем программно перемещать элементы (кнопки) и перерисовывать, например, подложку и ползунок... Флеш-плеер не знает, какие элементы при изменении должны оставаться на месте, какие перемещаться, а какие изменяться в размерах.
А про sprite.stage.scaleMode естественно ошибочно считали. У каждого визуального объекта есть свойство stage которое ссылается на экземпляр класса Stage, если он добавлен на сцену (или в любой другой клип на ней)... Как уже было сказано, Stage всегда одна на всю флешку. Почитайте хелп, там это все описано. |
Это мне понятно) мне нужно что бы все элементы просто оставались на своих местах, что бы я ресайз написал, который их по нужным местам расставит. так нафига геометрию то менять?) главный вопрос - как у клипа поменять scaleMode? это возможно вообще?
|
Я бы как-то так делал:
Код AS3:
|
Оххх... Вы когда собираетесь поменять высоту, у вас кнопка "стрелка вниз" не должна уйти вниз? А подложка, по которому ползунок бегает, не должна увеличиться в размерах?
Не хотите переопределять сеттеры, заведите себе метод setSize(width:int, height:int):void и расставляйте там уже все как надо, а height и width не трогайте. UPD: Глум опередил :) |
gloomyBrain, интересно) типа абстрактный класс своими силами?)
мужики, блин) я конечно не супер прогер, но подобные вещи понимаю! Вы не на тот вопрос отвечаете) у одних клипов скейлМод такой, у других другой. ВОПРОС ПОЧЕМУ И КАК СДЕЛАТЬ ЧТО БЫ ВЕЗДЕ ОДИНАКОВО БЫЛО? |
Охх (2 раза)...
Хорошо, пойдет от противного... Как ведет ваш скролл понятно, при изменении height все тянется... Тогда опишите, какой клип у вас не будет тянутся при изменении его высоты??? Может у вас где-то просто стоит scale9grid и вы не видите визуально, что и он тянется точно так же, кроме углов??? |
Цитата:
Цитата:
|
Ну а как иначе? :)... Если поставить scale9grid, то углы не будут изменяться в размерах, боковые части будут меняться в одном направлении, а центральная часть - в обоих направлениях... Обычно делают это на подложках кнопок, окон и т.п., где может меняться размер, но размер загруглений не должен меняться... но все равно как ни крути - это растяжение клипа...
Поэтому вас и советовали либо заоверрайдить сеттеры, либо завести метод, меняющий размер вручную, либо же комбинацию первого и второго. |
один раз задайте Stage сой scaleMode в главном контейнере по событию ADDED_TO_STAGE
один раз подпишитесь на событие RESIZE и тасуйте свои мувики в обработчике как хотите до потери пульса ) |
все понял) спасибо за объяснения!
|
2cleptoman
Как выяснилось, stage тут вообще не при чем, товарищу нужны были нерастягивающиеся при растяжении спрайты :)) |
ну это, как раз, в тему когда "всем все понятно")
переопределяем методы и вперед на баррикады ) |
| Часовой пояс GMT +4, время: 00:00. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.