Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Заставка и настройки. (http://www.flasher.ru/forum/showthread.php?t=206443)

djchich 04.02.2014 13:03

Заставка и настройки.
 
Добрый день,

Есть задача - сделать заставку с таймером обратного отчета до определенного времени с возможностью установки этого времени.
Т.е. логика такая:
Есть fla-проект с динамическим текстовым полем. Этот фла должен быть сконвертирован в swf а затем в scr (файл экранной заставки).
Конечный пользователь устанавливает дату какого-то события в настройках скринсейвера (например, 10.10.2015),
они сохраняются, и при каждом вызове заставки она отображает таймер отчета времени:
Осталось 30 дней, 8 часов, 15 мин.

Вопрос: Как можно сделать меню настроек экранной заставки скомпилированной из flash-проекта.
Благодарю.

Akopalipsis 04.02.2014 13:56

Если тридцать дней, то Вам нужно air делать, так-как он может записать выставленную дату в файл на компе пользователя. А меню делать так же, как и меню.

alexcon314 04.02.2014 14:14

Экранная заставка - это не просто ехе-файл. Насколько я помню, этот файл должен экспортировать пару-другую функций и, возможно, в ресурсах иметь что-то необходимое для корректного взаимодействия с системным менеджером заставок или как он там зовется.
Впрочем, если вы уже сумели сконвертировать swf в scr вам что-то должно быть известно об этом.
Чем конвертировали?

UPD Да, таки не ошибся. http://www.realcoding.net/articles/s...rana-na-c.html
Т.е. нужно, чтобы ехе-файл экспортировал функции
Цитата:

LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); - является "функцией окна" хранителя.
Она получает все сообщения системы (аналог функции WinMain в чистом Windows-приложении).
LRESULT WINAPI DefScreenSaverProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
- функция вызывается системой всякий раз когда пользователь нажимает кнопку "настройка..." в окне настройки хранителей экрана (Пуск->Настройка->Панель управления->Экран->Заставка).
BOOL WINAPI RegisterDialogClasses (HANDLE hInst);
По вопросу - диалог, о котором вы спрашивали, нужно делать отдельно и пихать в его в ресурсы длл или ехе. В любом случае ни айр ни тем более флеш на это не способен.

Помнится было что-то под названием ScreeenWeaver но очень давно. Поищите софт для конвертации swf в заставку, может и найдете.

silin 04.02.2014 14:43

как вариант - не связываться с меню настроек заставки, а в самой флешке в контекстное меню добавить пункт, вызывающей форму, данные из которой писать в SharedObject

djchich 04.02.2014 20:15

Всем большое спасибо за ответы.
Буду пробовать.

Aprel 04.02.2014 22:40

Я Вам не советую такой вариант (если только Вы делаете для своего личного компа)... Из условий понятно, что Вы хотите предложить кому то скрин в Винду на условиях 30 дней... Это Вам в чужую систему залезать надо... Вас никто не пустит в свою систему с Вашим файлом...

djchich 05.02.2014 15:17

Моя задача в следующем: пользователь заходит в настройки скринсейвера и выставляет дату окончания какого либо периода. Они сохраняются на компе пользователя и затем скринсейвер при запуске считывает введенные данные и на основании их создается таймер обратного отчета времени до введенной даты.
Подскажите, В чем по Вашему могут быть у меня трудности?
П.С. скринсейвер планируется распространять другим людям.

alexcon314 05.02.2014 15:52

1. По-сути нужно сделать обертку над плеером, ехе-файл, который загрузит флеш-плугин и воспроизведет swf, и при этом нужно, чтобы ехе реализовал упомянутый мной интерфейс в виде экспортируемых функций и системного диалога настроек, которые можно сохранить хоть в реестре, хоть в файле. Все это решаемо, но будет много возни, т.к. это с++ приложение, флеш тут уже с боку припека. Профит - на выходе будете иметь кульную штуку в своем роде, весьма авторскую, хороший задел на будущее в программировании в виндах, ну и скилы прокачаете нехило. Попутно можно убрать вообще стандартные менюшки флеша, еще там какие-то фичи навесить. Соответственно, нужно потратить время и силы.

2. silin предложил очень простой и достаточно эффективный способ решить задачу средствами одного флеша. Принеся в жертву системный диалог настроек (его просто не будет), вы можете малой кровью решить поставленную задачу. Настройки будут производиться из самого флеша и сохраняться в SharedObject (это файлик такой) на компе пользователя. Т.е. делаете на основе вашего swf проектор (Windows Projector), даете ему расширение .scr и кидаете в системный каталог со скринсэйверами. При этом он будет доступен в диалоге выбора скринсейвера на равне с другими и запускаться тоже будет (по крайней мере так раньше работало).
Настройки производить в самом запущеном скринсейвере: сделать там всплывающий диаложик с нужными полями средствами флеша и хранить данные в SharedObject, оттуда же и считывать их при старте. Диалог вызывать через контекстное меню по правому клику. Как-то так.

3. Третий вариант - поискать готовый конвертер swf -> scr. Т.е. прогу, которая выполнит все, что говорилось в первом пункте автоматически и выдаст на гора готовый скринсейвер. Сомневаюсь, что таких конвертеров много. Но вроде были раньше, я особо не интересовался :).

djchich 05.02.2014 20:46

alexcon314, Большое спасибо за исчерпывающие комментарии.
Первый вариант и впрямь хорош Но к сожалению не имею достаточного запаса времени на реализацию.
Третий вариант уже испробован и не является приемлемым в полном объеме т.к. представленные общественности утилиты не несут возможности создания диалогового окна с возможностью перехвата/обработки функция из флэша (или любого другого исполняемого файла).
А вот второй вариант мне подходит.

Еще раз большое спасибо всем участникам данной конференции.
По получении результата выложу сюда части кода.

Благодарю.


Часовой пояс GMT +4, время: 15:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.