Просмотр полной версии : Модальные окна, поделитесь опытом
Кто и как делает модальные окна, это что то вроде открылось окошко и нельзя ничего делать пока не закроешь его...
Т.е как дождаться ответа пользователя и выполнить соответствующие действия (или вернуться в ту чать программы которая проверит значения которые вернуло окно)...
Как вариант я думаю сделать так:
На фоне окна прозрачная кнопка с useHandCursor = false;
чтоб при открытии окна все остальные элементы под ним были не активны,
дальше сама функция вызова этого окна имеет тип boolean
с помощью watch (я тут недавно интересовался :) ) отслеживать что выбрал пользователь и исполнять нужный код в зависимости от ситуации.
Или еще вариант вешать на кнопки окна вызов функции, которая проанализирует выбор пользователя...
Есть еще какие-нибудь идеи-способы? Поделитесь опытом, пожалуйста...
Как вариант — положить под окно черный мув на весь экран с прозрачностью 50% (это даст понять юзеру, что остальной мув неактивен). Насколько я помню, в ас1\2 вложенные мувклипы не умеют реагировать на мышиные евенты. Могу ошибаться
Спасибо, уже так и сделал ;), но меня больше техническая часть вопроса интересует именно как реализовать такое окно с точки зрения кода и обработки ответа пользователя?
Я пока на все случаи окон наплодил и каждому на кнопки повешал функции разные,
но думаю есть же решение по элегантней и правильней...
Благо в данном случае у меня таких окон получилось всего два-три, а если больше...
Думаю это не только меня интересует...
но думаю есть же решение по элегантней и правильней...
Конечно есть. ООП называется.
Конечно есть. ООП называется.
Это ж не ответ... зачем вообще подобное писать, не понимаю, так для галочки и количества...Объектно-ориентированное программирование только для модальных окон решение? :)
Нельзя ли по конкретней?
Сам принцип, даже готовый код не прошу, хотя тоже было б не плохо :)
Конкретнее: пишете класс окна, определяете необходимые для вашего окна методы и свойства. Тогда чтобы создать окно, вам просто нужно будет создать екземпляр вашего класса с необходимыми параметрами.
to Obi:
Опять ничего конкретного...
Я про методы решения... а Вы мне про принципы ООП :)
to Obi:
Опять ничего конкретного...
Я про методы решения... а Вы мне про принципы ООП :)
Вам и описали метод решения. Метод решения — это не готовый код, а описание логики.
Вам и описали метод решения. Метод решения — это не готовый код, а описание логики.
И где же в ваших ответах описание логики?...
По Вашему получается таким образом можно на все вопросы на форуме отвечать... "создайте нужную функцию, в ней пропишите нужный код определите ей нужные параметры и все у вас заработает", так ведь...
Это по Вашему описание логики? Да, но очень, очень обобщенно...
Если нечего сказать, лучше стороной пройти, как многие уже сделали (около 70 человек просмотрело, а ответов/советов конкретных нет)
Интересно Вам, __etc, приходилось что либо спрашивать на форуме,
и если б Вы в ответ получили нечто подобное, это для Вас сразу определило бы логику алгоритма?
darksranger
10.09.2008, 00:20
а что вам не понятно то ? у вас есть код создания вашего модельного окна ? так вот и сделайте из него класс
для маленьких ( это если не понятен принцип ООП )
сделайте function из своего кода, по созданию окна, принимающий параметры описывающие ваши потребности и на основе принимаемых параметров отрисовыващее то что вам нужно
собственно если хотите в классе ( более рационально с точки зрения читаемости кода), то создайте класс, в него поместите функцию которую я описал сверху и создавайте экземпляр своего класса, передавая ему нужные параметры
PS вам доходчиво обьяснили еще в первом ответе ....
...у вас есть код создания вашего модельного окна ?...
PS вам доходчиво обьяснили еще в первом ответе ....
В том то все и дело что кода нету... был бы я б не спрашивал здесь что да как...
И в первом ответе ничего доходчивого, это я еще в своем вопросе написал, что чтоб заблокировать все от нажатий пользователя я ложу кнопку на все рабочее поле флешки...
Тут вопрос как код заблокировать/застопорить чтоб после отработки окна вернуться в нужное место и выполнить нужный код или в зависимости от выбора пользователя выполнить нужную для данного случая функцию...
Я же вызываю окно, а дальше то код продолжает выполняться...
а мне нужно дождаться решения пользователя и выполнять код дальше...
Например, есть удаление сообщений разных из разных мест, я хочу чтоб это можно было подтвердить, т.е на кнопку удаления я вешаю вызов такого "модального" окна которое переспросит пользователя и только после его ответа продолжит выполнение кода, и чтоб не делать для каждого случая новое окно с повешаной на его кнопку функцией, хотелось бы более красивого и правильного решения...
dirigableNorge
10.09.2008, 01:38
Ну ведь всё зависит от архитектуры программы.
Если у человека код работает, как процедура, а не как система взаиомосвязанных объектов, то нужно будет очень хорошо постраться, чтобы написать остановку выполнения алгоритмов. А если это ооп, то каждый экземпляр любого класса подписывается на определенное событие типа onStopWork, блокирующую выполнения текущего алгоритма, а после выбора пользователя onRestartWork, с передачей параметра от пользователя. В любом случае сначала нужно знать, что именно делает программа каждый момент времени, а затем уже создавать объекты и методы в соответствии с выработанной методологией.
А код тебе никто писать не будет. Потому, что код это всего лишь инструмент для решения задачи, а когда задача это сделать инструмент, то сам понимаешь это туфта - тако инструмент никому не нужен.
Вобщем-то, как правило, алерт не должен прекращать работу других компонентов, а просто предотвратить интеракцию с пользователем, так что останавливать их нет смысла...
По поводу архитектуры - логичо, на мой взгляд иметь менеджер окон, абстрактный класс окна и фабрику, которая эти окна создает.
Менеджер осуществляет открытие окна и диспатчит соответствующее событие, все, кому нужно это событие на него подписываются. Далее, все подписавшиеся могут получить от менеджера ссылку на открытое окно и подписаться на события окна. Соответственно, перед закрытием менеджер диспатчит событие закрытия, все, кто должен был отреагировать на него - отписываются от событий окна.
Абстракный класс / интерфейс окна позволяет унифицировать доступ / подписку. Ну а фабрика нужна для того, чтобы создавать схожие по типу доступа, но разные по функционалу окна.
Короче дело ясное что дело темное....
Пока не подросту чтоб потом всем новичкам тут тоже так умно отвечать,
буду делать так:
модальное окно вызываю функцией в параметрах которой передам имя функции которую нужно выполнить после решения пользователя,
на код кнопок повешаю функцию обработки результатов окна которая в зависимости от выбора пользователя - "Да - Нет" выполнит нужную функцию переданную параметром при вызове окна...
будет ли это хорошо и более менее правильно?
Вобщем-то, как правило, алерт не должен прекращать работу других компонентов, а просто предотвратить интеракцию с пользователем, так что останавливать их нет смысла...
...Ну а фабрика нужна для того, чтобы создавать схожие по типу доступа, но разные по функционалу окна.
Вот это я понимаю совет или толковый ответ :)
Спасибо... но думаю на данном этапе развития это для меня еще сложновато будет....т.е. суть я примерно понял, но реализацию не потяну, наверное, еще...
А так я скопирую это все в заметки и когда нибудь воспользуюсь...
Еще раз огромное спасибо wvxvw
Тут вопрос как код заблокировать/застопорить чтоб после отработки окна вернуться в нужное место и выполнить нужный код или в зависимости от выбора пользователя выполнить нужную для данного случая функцию...
а если просто создать цыкл, выходом из которого будет решение пользователя??
тормознуто, зато просто в реализации и понимании .... ;)
а если просто создать цыкл, выходом из которого будет решение пользователя??
тормознуто, зато просто в реализации и понимании .... ;)
Пробовал - очень тормознуто, причем в swf есть ограничение на бесконечность циклов (чтоб скрипты не вешали swf-ки) в 15 сек.,
можно и изменить этот порог, но очень уж тормознуто все получается ),
поэтому такое решение не выход.
...Как вариант я думаю сделать так:
На фоне окна прозрачная кнопка с useHandCursor = false;
очень правильная мысль, если пресловутая "фабрика окон" )))) пугает. просто экранируй всё этой кнопкой, а окошко своё повесь над этим экраном. при закрытии окна удали экран и всё. вообще на старте есть смысл пытаться упрощать задачи, а не обобщать их(==унифицировать решения).
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.