|
Вопрос # 773/ вопрос открыт / |
|
Уважаемые эксперты, как можно зная только путь к swf ролику изнать его разрешение (например 800х600).Меня не интересует длина, мне надо сколько высота и ширина у ролика, тоесть как у картинки width heigh, МНЕ НАДО ЧТОБЫ РАЗМЕР ФОРМЫ БЫЛ РАВЕН РАЗМЕРУ РОЛИКА.
 |
Вопрос задал: Аксион (статус: 4-ый класс)
Вопрос отправлен: 21 июля 2007, 10:44
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Dron
Здравствуйте, Матвеев Мефодий Олегович!
Все необходимые данные можно изъять с помощью методов TGetProperty() и TGetPropertyAsNumber(). Подробное описание всех свойств и методов TShockwaveFlash можно увидеть здесь: http://www.delphiflash.com/library-shockwave-flash.php. Как видно из таблицы, ширине и высоте самого swf-ролика соответствуют константы 8 и 9. Таким образом, чтобы установить размер объекта TShockwaveFlash равным размерам ролика, нужно сначала загрузить сам ролик, изменив свойство Movie, а затем узнать нужные параметры. Пример:
Flash.Movie:=\'C:\your_path\movie.swf\';
Flash.Width:=Round(Flash.TGetPropertyAsNumber(\'/\',8));
Flash.height:=Round(Flash.TGetPropertyAsNumber(\'/\',9));
Здесь Flash - сам объект TShockwaveFlash. Метод TGetPropertyAsNumber возвращает указанный параметр в виде числа, а TGetProperty - просто в виде строки.
Далее, чтобы установить размер формы по размеру поля Flash, нужно либо использовать AutoSize формы (установить в True), либо изменить размеры клиентской области вручную:
YourForm.ClientWidth:=Flash.Width;
YourForm.ClientHeight:=Flash.Height;
Желаю удачи!
 |
Ответ отправил: Dron (статус: Студент)
Время отправки: 21 июля 2007, 12:07
Оценка за ответ: 5
Комментарий к оценке: Спасибо
|
Мини-форум вопроса
Всего сообщений: 15; последнее сообщение — 22 июля 2007, 13:22; участников в обсуждении: 3.
|
Dron (статус: Студент), 21 июля 2007, 11:07 [#1]:
А какой компонент вы используете для отображения Flash на форме? Может быть, там есть что-то вроде AutoSize?
С уважением.
|
|
Dron (статус: Студент), 21 июля 2007, 12:08 [#3]:
Кстати, это ссылка не на компонент, а на статью с примером его использования Сам компонент - это ActiveX TShockwaveFlash.
С уважением.
|
|
Аксион (статус: 4-ый класс), 21 июля 2007, 14:23 [#4]:
Dron сами вы пробовали то что предложили мне?А то у меня как был начальный размер так и остался хотя я сделал как вы сказали
|
|
Dron (статус: Студент), 21 июля 2007, 14:43 [#5]:
Естественно.
Ищите, что является помехой. Возможно, размер вашего ролика как раз точно совпадает с размером компонента. Чтобы убедиться, откройте ролик в каком-нибудь flash-проигрывателе и сравните результаты. А вообще, начать нужно с проверки значений, которые выдаются TGetPropertyAsNumber (с помощью debugger\'а или выводом их куда-нибудь на форму).
С уважением.
|
|
Аксион (статус: 4-ый класс), 21 июля 2007, 14:45 [#6]:
Хотя нет работает но не правельно правельно отображается размер у 1 из 4 флэшек
|
|
Ерёмин А.А. (статус: *Администратор), 21 июля 2007, 14:47 [#7]:
Матвеев Мефодий Олегович, Dron: в уведомлениях о сообщениях на мини-форумах последние полчаса могли быть неверные имена участников, оставивших сообщение или мог отсутствовать текст. Исправлялась одна из ошибок. Всё устранено.
|
|
Dron (статус: Студент), 21 июля 2007, 14:49 [#8]:
Не у каждого ролика жёстко задан его размер. Многие ролики могут быть безразмерными, т.е. резиновыми и растягиваться по всему окну.
С уважением.
|
|
Аксион (статус: 4-ый класс), 21 июля 2007, 14:51 [#9]:
вывел в лабел1 и лабел2 при просмотре ролика happy tree friends были значения 1820.1 и 1350.8 не много ли? О_о
|
|
Аксион (статус: 4-ый класс), 21 июля 2007, 14:54 [#10]:
Вообще я изучал Micromedia flash 8 но я всегда чётко задавал размер, а как делать без размерные такого я не знаю.
|
|
Dron (статус: Студент), 21 июля 2007, 14:55 [#11]:
Значит ролик в таком разрешении и создан. Определяется там всё верно - я пробовал на маленьком ролике - выдавались значения около 270x250 - оно так и есть. Если бы мы вручную ковыряли файл и находили там данные - тогда ошибки могли бы быть, но здесь всё от Macromedia "в чистом виде", поэтому ошибки исключены.
С уважением.
|
|
Dron (статус: Студент), 21 июля 2007, 15:00 [#12]:
С Macromedia Flash не работал, но причина может быть и какая-то другая. Может быть там разные способы сохранения или что-нибудь в этом роде. Например, попадаются ролики, которые вообще не открываются - кто знает, отчего так?
В общем, лучше всего проверять значения и если они реальные, то изменять размер формы, а если нет (кстати, что выдавалось на тех роликах, где размер формы не менялся?), то ставить какой-то стандартный размер вроде 320x240.
С уважением.
|
|
Аксион (статус: 4-ый класс), 22 июля 2007, 12:56 [#13]:
А НЕТ НИКАКОГО ДРУГОГО КОМПОНЕНТА С ВНЯТНЫМ AUTOSIZE
|
|
Dron (статус: Студент), 22 июля 2007, 12:59 [#14]:
Не знаю. Их вообще не так много... См. на том же сайте, с которого мной была взята информация о константах. Там есть TShockwaveFlashEx - быть может там это есть. Но он платный.
P.S. Не надо писать большими буквами, и без того нормально сообщения воспринимаются.
С уважением.
|
|
Аксион (статус: 4-ый класс), 22 июля 2007, 13:22 [#15]:
Ой я незаметил включёный Caps Lock (опять)
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|