Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2008, 02:35   #1
mrakaziabra
Новичок
Джуниор
 
Регистрация: 14.07.2008
Сообщений: 1
По умолчанию Взаимодействие flash и C#?

Как сделать взаимодействие flash роликов, то есть swf файлов, и C#? А именно управление роликами и передача им параметров?
mrakaziabra вне форума Ответить с цитированием
Старый 16.07.2008, 00:39   #2
Nicita
Новичок
Джуниор
 
Регистрация: 16.07.2008
Сообщений: 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");   //узнать на каком кадре находится ролик.
и еще много вкусного

Последний раз редактировалось merax; 16.07.2008 в 07:18.
Nicita вне форума Ответить с цитированием
Старый 16.07.2008, 00:45   #3
Nicita
Новичок
Джуниор
 
Регистрация: 16.07.2008
Сообщений: 2
По умолчанию

кроме того, можно управлять с помощью "свойств" флэш клипа.
со стороны клипа используються команды .addProperty
со стороны си шарпа - setVariables
Nicita вне форума Ответить с цитированием
Старый 16.07.2008, 07:16   #4
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Гуд. Только в следующий раз тег <CODE> используй.
merax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
взаимодействие с QIP Toxa Общие вопросы Delphi 5 20.06.2008 19:39
Взаимодействие с другим XPAiN Общие вопросы Delphi 3 27.05.2008 14:31
Взаимодействие с виндой и еще кое-что Manitu Помощь студентам 5 25.03.2008 09:28