![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2014
Сообщений: 312
|
Ясно, спасибо.
Цитата:
|
|
|||||
|
Но судя из моего поста можно подумать, что я все действия делаю в Main. Нет, это не так.
Я привёл реализацию панели в Main только для примера. В этом плане слушайте Wolsh Цитата:
package { import flash.display.Sprite; /** * ... * @author ZackMercury */ public class InstrumentsPanel extends Sprite { private var _panel:Panel; public function IntrumentsPanel() { _panel = new Panel(); _panel.addButton(..., buttonClicked); //Создаём задний фон панели для перетаскивания при зажатии на нём мыши и крестик для закрытия, опущу этот момент, ибо тут всё элементарно. ... addChild(_panel); } private function buttonClicked(e:MouseEvent):void { switch((e.target as Button).caption) { case "...": //todo, здесь выбираем текущий инструмент и записываем в публичное свойство, чтобы область рисования выбирала его break; case "...": //todo break; default: throw new Error("No action for this button"); } } } }
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 29.01.2015 в 23:44. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Dec 2014
Сообщений: 312
|
Спасибо, вроде появились какие-то мысли, буду проверять на практике.
|
|
|||||
|
Хотя я могу сказать ещё по этому же примеру.
Мы наследуем нашу панель инструментов от Sprite, однако всё можно упростить, если сделать заготовку, класс Window, который уже будет содержать задний фон и крестик и растягиваться по любой ширине(при этом не растягивая крестик), и наследовать нашу панель от него, тогда не нужно писать в этом классе ничего кроме создания экземпляра Panel и создания в нём кнопок согласно инструментам. При этом сами инструменты можно вообще вынести в XML-формат, ради того, чтобы инструменты самостоятельно мог себе дописывать пользователь, если вы научите как, или сделаете редактор инструметов) Вот я только что практически библиотеку продумал до деталей. И потом эти все панели и класс Window можно будет немного модифицируя использовать где угодно и быстро создавать окна и панели из кнопок.
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 30.01.2015 в 16:05. |
|
|||||
|
ZackMercury, допиши пожалуйста класс Button
![]()
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
|
Специально для вас собрал рабочий проект. Писал на скорую руку, поэтому если вдруг что-то будет непонятно или найдёте ошибку - отпишите)
П.С. Рекомендую поиграться с исходниками, создать несколько экземпляров таких панелей, разместить их рядом и добавлять/удалять кнопки, выполнять действия по клику на определённые кнопки(например, добавить вторую панель с двумя кнопками, одна будет добавлять кнопку на первой панели, другая - удалять) и т.д. А также отступ между кнопками хранится в константе класса MyPanel. П.П.С. Размеры кнопки статичны, но их тоже можно сделать динамическими, чтобы кнопка расширялась по контенту внутри неё(кстати, туда можно совать не только текст, а и изображения, если немного модифицировать класс кнопки и панели). Писал быстро, не успел продумать этот момент. Надеюсь на то, что вы сумеете справиться с этой задачей)
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 31.01.2015 в 04:58. |
|
|||||
|
ZackMercury, мне то все понятно, я уже применил этот подход в своем проекте )
Попросил выложить, потому что не знаю, что нужно прописать в классе для кнопок, чтобы заработал . Как я полагаю onClick это публичный метод внутри кнопок и ей как то должна передаться функция onClick, которая приходит как параметр в панель... Уже и так и так крутил, но чтото ошибки выдаются при компиляции ) Щас разбирусь ) Спасибо огромное )
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Судя по записи, onClick это сеттер. То есть
__________________
Reality.getBounds(this); |
|
|||||
|
Со всем разобрался, все работает. Спасибо огромное
__________________
кто не отвечает, того garbage collector забирает |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|