![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2001
Адрес: Шинель
Сообщений: 99
|
Начну с того, что с Macromedia меня связывает любовь с первого взгляда (не взаимная конечно же:-)): впервые увидев Flash, я был покорён сразу и, как я тогда думал, - навсегда... Не буду лишний раз перечислять все "вкусности" продуктов сей уважаемой мной (и далеко не только мной) компании. В частности во Flash меня устраивало практически всё... до некоторых пор. С нарастающим энтузиазмом я осваивал данную программу: разбирал уроки с сайта flasher.ru (лучше которого по соответствующей тематике не встречал), потом разбирал исходники, а уж потом приобрёл великолепную книгу «Action Script. Подробное руководство» Колина Мука (настоятельно рекомендую это достойнейшее издание всем флэшерам). Извините за длинное предисловие, вот мы с вами уже и подошли к сути моих претензий: что я имею освоив (всё, конечно же, относительно, я не утверждаю, что теперь знаю о Flash всё, но пользую его уверенно) Flash? А имею я не много, - возможно виноват я сам, - виноват в том, что изначально неверно выбрал приложение для своих задач. Дело в том, что для меня не представляют большого интереса интернет-приложения, мощным инструментом разработки которых является Flash, мне было бы гораздо интересней внедрить Flash как инструмент разработки анимированного интерактивного интерфейса для своих программ, написанных, к примеру, в Delphi. Вот тут и возникает огромнейшая козья морда, подложенная компанией Macromedia мне: по правому клику на объекте ActiveX ShockwaveFlash хоть ты тресни, появляется это сакраментальное меню (в лучшем случае его можно только сократить) About Macromedia Flash! Я уж не говорю о том, что правый клик зарезан во Flash. И что же делать?! – воскликну я, уподобясь классику. Вы скажите, что, мол, можно использовать непофиксенный метод объекта Key.isDown(2)? Конечно можно и даже более того нужно, - просидев вечер, я сумел создать для правой кнопки мыши события press & release, но для удобства проверки мне пришлось поступить немного некрасиво: я варварски выдрал из плеера меню, что позволительно сделать у себя дома и для себя, но ни в коем случае так не поступит настоящий джентльмен, разрабатывающий продукт, рассчитанный на массового потребителя, коим и является ваш покорный слуга. Не стану же я резать .ocx-файл из C:\WINDOWS\SYSTEM\MACROMED\FLASH… Некрасиво это, да и не законно, да и просто НЕ ХОЧЕТСЯ так поступать с продуктом компании, которая так была когда-то любима! Вот и прошу я у вас, Уважаемые Флэшеры, совета: может кто-то уже решил эту проблему с Flash? – Расскажите пожалуйста. Кстати эта проблема не единственная из возникающих при внедрении ShockwaveFlash в любую среду разработки: при установке свойства transparent (в том же Delphi, допустим) и так и не сумел добиться прозрачности фона… но это уже отступление. Или Flash по определению не подходит для таких задач и теперь мне нужно осваивать что-то новое вроде MacromediaDirector с его Lingo (там-то как дела обстоят с popUp-меню?) Или, быть может, есть другие, строго ориентированные, среды для разработки красивых интерфейсов? Вообще, хотя бы просто подскажите, не бросайте меня на распутье одного пожалуйста. Заранее благодарен. На веки Ваш, Акакий.
|
|
|||||
|
Регистрация: Mar 2002
Сообщений: 204
|
Начну с того, что всякий вставленный в Дельфовую форму ActiveX все равно является объектом класса TControl - значит, есть у него и свойство WindowProc, которое мы можем смело перекрыть... Вся фишка в том, что мы смотрим - если к нам пришло MW_RBUTTONDOWN, мы его обслуживаем самостоятельно и дальше не отдаем. А вот если что другое - всегда пожалуйста, вызываем старый обработчик... В приведенном ниже примере SF - это вставленный в дельфовую форму ActivX с мувиком. При нажатии на правую кнопку жалобно пищит, в остальном функционирует нормально... Пример представлен только для демонстрации идеи...
unit mftestfm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, ShockwaveFlashObjects_TLB;
type
TForm1 = class(TForm)
sf: TShockwaveFlash;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
OldProc:TWndMethod;
procedure newProc(var Message: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
OldProc :=sf.WindowProc;
sf.WindowProc:=newProc;
end;
procedure TForm1.newProc(var Message: TMessage);
begin
if Message.Msg <> WM_RBUTTONDOWN then
OldProc(Message)
else
MessageBeep(0);
end;
end.
|
|
|||||
|
Регистрация: Nov 2001
Адрес: Шинель
Сообщений: 99
|
Спасибо Вам огромное! Вот теперь перед моим взором снова распахнулись необъятные горизонты!
|
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
Это ты вышел на орбиту. Не забудь застегнуть скафандр...
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
|
"Ниразу не флэшер"
|
в открытый космос. это - не законно, хотя, конечно и возможно. ActiveX компоненты предоставляются (обычно) с условием указания автора.
__________________
стучитесь в асю за дополнительной помощью.... ЗЫ: ПОИСК действительно рулит. |
|
|||||
|
Регистрация: Nov 2001
Адрес: Шинель
Сообщений: 99
|
да укажу я на Macromedia ессессно, но не стоило же для указания на самих себя целое событие резать...
|
![]() |
Часовой пояс GMT +4, время: 01:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|