Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проигрывание в программе flash роликов 
:(
    Опции темы
desivers
Дата 22.3.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 15.3.2007

Репутация: нет
Всего: 1



Нужно в программе проигрывать swf ролики, возможность ставить их на паузу, как можно осуществить?
PM MAIL   Вверх
frozer
Дата 23.3.2008, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 18.3.2008
Где: Волгоград

Репутация: нет
Всего: 1



Попробуй делать прогу под Framework 3.0 (или выше), используя WPF. Вроде там есть поддержка флэша.
PM MAIL   Вверх
Flenger
Дата 23.3.2008, 14:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 24.6.2006

Репутация: нет
Всего: нет



Окружение: Windows XP, .NET 2.0, Flash Player

Способов встроить Flash ролик в форму - 2 (представлены ниже).
Действия: перетянуть на форму компонент WebBrowser или создать и настроить его руками, установить ему свойство Url - путь к ролику (.swf) или к .html в котором всторен флеш объект.

Код

private System.Windows.Forms.WebBrowser webBrowser1;
    ...
    this.webBrowser1 = new System.Windows.Forms.WebBrowser();
    this.webBrowser1.Location = new System.Drawing.Point(14, 236);
    this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
    this.webBrowser1.Name = "webBrowser1";
    this.webBrowser1.Size = new System.Drawing.Size(250, 131);
    this.webBrowser1.Url = new System.Uri("c:\\tmp\\simple.swf", System.UriKind.Absolute);


Достоинства: простота
Недостатки: нет возможности получать комманды от ролика и управлять им
Способ подходит для простого отображения флеш контента. Если роликом нужно управлять или получать от него комманды, - необходимо воспользоваться вторым способом.



2. С помощью AxtiveX компонента Shockware Flash Object.
Действия:
- в VS 2005 правой кнопкой кликнуть на поле Toolbox, в контекстном меню выбрать Choose Items.
- в появившемся окне Choose Toolbox Items перейти на закладку COM Components, выбрать Shokware Flash Object 
(я использую Debug версию 9 плеера, у меня это - c:\Windows\system32\Macromed\Flash\FlDbg9.ocx).
- теперь на закладке у нас появился Shockware Flash Object, который можно смело перетянуть на форму.

Код

private AxShockwaveFlashObjects.AxShockwaveFlash flashPlayer;
    this.flashPlayer = new AxShockwaveFlashObjects.AxShockwaveFlash();
    this.flashPlayer.Enabled = true;
    this.flashPlayer.Location = new System.Drawing.Point(13, 12);
    this.flashPlayer.Name = "flashPlayer";
    this.flashPlayer.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("flashPlayer.OcxState")));
    this.flashPlayer.Size = new System.Drawing.Size(300, 200);


- замеченные баги: Если при первой компиляции после добавления ролика выдает ошибку, что не найден только что добавленный компонент - необходимо удалить папки obj, bin в проекте.
Работа с компонентом:
- загрузка ролика в компонент:

Код

string path = "c:\\tmp\\simple.swf";
    flashPlayer.LoadMovie(0, path);


здесь я надеюсь все понятно, смущение может вызвать первый параметр - для тех, кто знает флеш - это слой, на который будет загружен ролик.
- получение команд от ролика:
флеш ролик может взаимодействовать с окружением с помощью команды языка Action Sript - fscommand, например(обработчик нажатия кнопки во флеш ролике) - 

Код

on(click) {
        fscommand("sendCmd", 1);
    }


первый параметр - имя комманды, второй - аргумент комманды.
Ловим эту комманду из Windows.Forms :
//подписываемся на событие от ролика на получение fscommand

Код

flashPlayer.FSCommand += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(flashPlayer_FSCommand);
    //подписчик:
    void flashPlayer_FSCommand(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
        {
            tbOut.Text += e.command + " (" + e.args + ")" + "\r\n";
        }


при этом - e.command - команда (строка), e.args - аргумент команды (строка). В примере команда добавляется в текстовое поле для отображения.
- управление роликом:
для управления роликом у компонента есть блок методов, начинающихся с T, вот некоторые:

Код

flashPlayer.TPlay("rect_mc");   //стартует MovieClip rect_mc, который находится на сцене ролика
    flashPlayer.TGotoFrame("rect_mc", 1);   //переводит rect_mc на первый кадр
    flashPlayer.TCallFrame("rect_mc", 1);   //вызывает первый кадр rect_mc
    flashPlayer.TStopPlay("rect_mc");       //останавливает проигрывание rect_mc
    flashPlayer.TSetProperty("rect_mc", 1, "50");//установить свойство c индексом 1 в значение "50"
    string s = flashPlayer.TGetProperty("rect_mc", 1);  //считать первое свойство
    int frame = flashPlayer.TCurrentFrame("rect_mc");   //узнать на каком кадре находится ролик.


и еще много вкусного 
Данная статья расчитана наверное не на очень широкий круг читателей форума, но вопрос не достаточно освещен в рунете, поэтому я думаю кому-то, но она пригодится. Может кто-то мечтал написать флеш игрушку, но при этом не знал Action Script, прочитав эту статью, это можно сделать теперь на родном C# smile
Проект с примером не выкладываю, по причине распространенности разных версий флеш плееров и ocx компонентов, но работоспособность приведенного кода будет соблюдаться при наличии флеш плеера версии 6 и старше, возможно и младше - не проверял.
Вопросы и комментарии приветствуются. Спасибо прочитавшим, при распространении ставьте копирайты ;-) 

Автор этой статьи PIL (forum.sources.ru)



PM MAIL   Вверх
desivers
Дата 24.3.2008, 04:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 15.3.2007

Репутация: нет
Всего: 1



to Flenger спасибо что описал но есть пробелемы, через webBrowser 
Код

webBrowser1.Url = new System.Uri("c:\\tmp\\1.swf", System.UriKind.Absolute);
 приложение вываливается и без ошибок хотя странички отображаются, а с помощью AxtiveX компонента Shockware Flash Object некомпилируется. Я его добавляю на палитру компонентов, перетаскиваю на форму и при загрузке пишет что 
Код

An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in System.Windows.Forms.dll

Additional information: Невозможно получить дескриптор окна для элемента управления 'AxShockwaveFlash'. Элементы управления ActiveX, не базирующиеся на окнах, не поддерживаются.

PM MAIL   Вверх
desivers
Дата 29.3.2008, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 15.3.2007

Репутация: нет
Всего: 1



скинте маленький работающий пример с flash
PM MAIL   Вверх
wl9x
Дата 15.8.2011, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 15.8.2011

Репутация: нет
Всего: нет



Незнаю ли кому еще нужно, но так как у меня при добавлении компонента Shokware Flash Object на форму вылетало VS 2010 пришлось искать альтернативу
Нашел хорошую библиотеку F-IN-BOX с компонентом для проигрывания swf i flv
http://f-in-box.com/dotnet/
Тамже можно скачать пример программ, использующих данную библиотеку
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.