![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Ну так а что вы хотите от скролла-то, если вы просто меняете размеры всего спрайта-оболочки этого скролла... Автоматом этого сделать нельзя, нет никаких волшебных scaleMode для вашего случая. Надо оверрайдить сеттер height и в нем программно перемещать элементы (кнопки) и перерисовывать, например, подложку и ползунок... Флеш-плеер не знает, какие элементы при изменении должны оставаться на месте, какие перемещаться, а какие изменяться в размерах.
А про sprite.stage.scaleMode естественно ошибочно считали. У каждого визуального объекта есть свойство stage которое ссылается на экземпляр класса Stage, если он добавлен на сцену (или в любой другой клип на ней)... Как уже было сказано, Stage всегда одна на всю флешку. Почитайте хелп, там это все описано. Последний раз редактировалось Hidest; 03.03.2011 в 14:55. |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Это мне понятно) мне нужно что бы все элементы просто оставались на своих местах, что бы я ресайз написал, который их по нужным местам расставит. так нафига геометрию то менять?) главный вопрос - как у клипа поменять scaleMode? это возможно вообще?
|
|
|||||
|
Я бы как-то так делал:
package ugo.view.abstract { import flash.display.Sprite; import flash.errors.IllegalOperationError; /** * Спрайт с возможностью ресайза * * @author gloomyBrain */ public class AbstractResizingSprite extends Sprite implements IResizeble { protected var _width:Number = 0; protected var _height:Number = 0; public function AbstractResizingSprite() { super(); if ((this as Object).constructor as Class == AbstractResizingSprite) { throw new IllegalOperationError("Нельзя создать экземпляр абстрактного класса!"); } } public function setSize(width:Number, height:Number):void { _width = (width < 0 || isNaN(width)) ? 0 : width; _height = (height < 0 || isNaN(height)) ? 0 : height; this.redraw(); } protected function redraw():void { throw new IllegalOperationError("Метод должен быть переопределен!"); } /** * Ширина контейнера */ override public function get width():Number { return _width; } /** * @private */ override public function set width(value:Number):void { this.setSize(value, _height); } /** * Высота контейнера */ override public function get height():Number { return _height; } /** * @private */ override public function set height(value:Number):void { this.setSize(_width, value); } } }
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Оххх... Вы когда собираетесь поменять высоту, у вас кнопка "стрелка вниз" не должна уйти вниз? А подложка, по которому ползунок бегает, не должна увеличиться в размерах?
Не хотите переопределять сеттеры, заведите себе метод setSize(width:int, height:int):void и расставляйте там уже все как надо, а height и width не трогайте. UPD: Глум опередил ![]() |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
gloomyBrain, интересно) типа абстрактный класс своими силами?)
мужики, блин) я конечно не супер прогер, но подобные вещи понимаю! Вы не на тот вопрос отвечаете) у одних клипов скейлМод такой, у других другой. ВОПРОС ПОЧЕМУ И КАК СДЕЛАТЬ ЧТО БЫ ВЕЗДЕ ОДИНАКОВО БЫЛО? Последний раз редактировалось proxiServer; 03.03.2011 в 15:04. |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Охх (2 раза)...
Хорошо, пойдет от противного... Как ведет ваш скролл понятно, при изменении height все тянется... Тогда опишите, какой клип у вас не будет тянутся при изменении его высоты??? Может у вас где-то просто стоит scale9grid и вы не видите визуально, что и он тянется точно так же, кроме углов??? |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Ну а как иначе?
... Если поставить scale9grid, то углы не будут изменяться в размерах, боковые части будут меняться в одном направлении, а центральная часть - в обоих направлениях... Обычно делают это на подложках кнопок, окон и т.п., где может меняться размер, но размер загруглений не должен меняться... но все равно как ни крути - это растяжение клипа...Поэтому вас и советовали либо заоверрайдить сеттеры, либо завести метод, меняющий размер вручную, либо же комбинацию первого и второго. |
|
|||||
|
один раз задайте Stage сой scaleMode в главном контейнере по событию ADDED_TO_STAGE
один раз подпишитесь на событие RESIZE и тасуйте свои мувики в обработчике как хотите до потери пульса )
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
все понял) спасибо за объяснения!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|