![]() |
Пропорциональное изменение ширины у загруженного объекта и его дочерних элементов
Вложений: 2
Загружаю swf с изображением кнопки. Внутри большой кнопки находятся ещё две маленькие кнопки
Вложение 26805 Нужно растягивать по ширине только саму основу кнопки не меняя размеры двух маленьких кнопок. Кнопки в итоге собой представляют некий список и находятся все в едином контейнере. Вложение 26806 Поэтому я пытаюсь изменять ширину у контейнера, чтобы разом изменить ширину у всех кнопок находящихся в контейнере, но при этом форма двух маленьких кнопок тоже растягивается. Есть варианты, как это сделать? |
Очевидно менять только ширину основы кнопки, а не самой кнопки и уж тем более не контейнера.
|
Тогда придется каждую кнопку в отдельности ресайзить, т.к. кнопки могут как удаляться, так и добавляться в контейнер (число их не ограничивается).
Я думаю есть более продуктивный способ, к примеру, изменив ширину основы у одной кнопки, все остальные кнопки об этом узнали и тоже изменили ширину. Может есть другие варианты? По началу я пытался использовать scale9grid, но у меня он совершенно не работал, возможно потому что в этой ситуации он не пригоден. |
Если вам надо чтобы растягивался только фон, то и растягивать надо только фон.
Другой вопрос как вы это организуете. Можно set-функцию сделать в классе, в которой регулировать ширину фона, можно в конструктор класса входным параметром ширину загнать, можно кастомное событие с параметром ширины рассылать всем кнопкам или типа того. Но что то мне подсказывает, что с классами, а тем более кастомными событиями вы не сталкивались еще. |
Цитата:
|
Цитата:
Вот, что такое кастомное событие без понятия, или вы имеете в виду флешевую диспетчерезацию? Можно по подробнее. Wolsh, ресайз одной кнопки, это как бы не проблема. Вопрос в том, как ресайзить их все разом не делая при этом лишних телодвижений. Я, к сожалению, не понял сакраментальной необходимости в сеттере, поэтому разродился на два своих варианта, но я уверен, что можно все организовать гораздо более верным способом, надеюсь на понимание. Перерисовывать графику кнопки/кнопок нет необходимости, так как, повторюсь, кнопки грузятся из свф Первый вариант Класс CList - реализует список кнопок ->> Код AS3:
В цикле создаются экземпляры кнопок и записываются ссылками в массив. Метод updateWidth() вызывается, когда изменяется ширина окна в котором находятся кнопки, которые так же должны менять свою ширину(ширина кнопок идентична ширину окна). При помощи цикла фор ич у всех экземпляров через ссылки вызывается метод widthFoo() в классе кнопки CListView и передаются новые размеры окна. Этот вариант мне кажется не верным, т.к. необходимо очень часто вызывать метод updateWidth() и соответственно цикл. Второй вариант Класс CList - реализует список кнопок ->> Код AS3:
Но для того чтобы актуальная информация этой переменной была реализована, в классе кнопки CListView вызывается enterframe постоянно, что очень напрягает, как меня так и процессор, тем более если учесть, что кнопок этих может быть значительное кол-во. Пока что актуален первый вариант. Было бы интересно прочитать комментарии по этим вариантам. Интересуют другие предложения. |
Цитата:
Свойство height класса CListView Вы же переопределили (иначе зачем это странное приведение Number к Number). Почему же не сделать один правильный сеттер width, правильно меняющий ширину? Цитата:
|
Цитата:
Я предпочитаю имя-отчество. function creatChildGenadiyVasilevich():void { bornChildOlgaNikolaevna() } function bornChildOlgaNikolaevna():void { bornChildName(NikitaVasilevich) } Извините, за срамной код, это черновик, я не особо задумываюсь над названием методов, хотя это целая наука) во время рефакторинга постараюсь все исправить. Цитата:
Цитата:
Если кнопку рисовать, а не грузить, код в классе кнопки ->> Код AS3:
Цитата:
Но мне этот вариант с частым вызовом цикла, все-таки не нравится. Ведь он вызывается постоянно, когда я зажимаю кнопку для растягивания окна и веду мышь (mouseMove) С вибрирующем восьмиэтажным механизмом вы в точку попали :) так и есть. Если у вас найдется время, покажите примерно, что вы имеете в виду под правильным сеттером, я видимо чего-то не понимаю. Пусть до меня и не все доходит, что вы предлагаете, ваши ответы каким-то магическим образом помогают выбрать правильный путь :) |
Код AS3:
Код AS3:
И если честно, я не понял почему обязательно перерисовывать (хотя сам всегда так и делаю, но я вообще не пользуюсь IDE, то есть рисую все кодом или встраиваю битмап). Растягивать клипик, засунутый на фон в кнопку, думаю ничем не сложнее. Надо только дать ему имя и включить enable 9Grid scaling, если надо. |
| Часовой пояс GMT +4, время: 05:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.