Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   подружить C# и Flash (http://www.flasher.ru/forum/showthread.php?t=157029)

zxcv 30.05.2011 17:19

подружить C# и Flash
 
Использую для этой цели fscommand. Так вот вопрос: ActionScript не дожидается завершения выполнения кода контейнера, вызванного fscommand, и этот код выполняется параллельно с кодом ActionScript? Типа просто был послан сигнал во внешнюю среду и все, так?

wvxvw 30.05.2011 20:21

По-идее как раз наоборот, но я fscommand никогда не пробовал, или так давно, что уже и не помню. Вообще "рекомендуемый" способ - это через ExternalInterface. А вообще - посмотрите в блогах http://www.flasher.ru/forum/blog.php?b=389 и другие посты alexcon314 на эту тему, может чего-нть полезное для себя найдете :)

zxcv 01.06.2011 16:45

ога, спасибо за ответ, но што-то как-то уже с fscommand свыкся ))
другой вопрос: пишу прогу (C#+Flash) на одной машине, тестирую - на другой. так вот на моей машине все работает, как положено, на тестовой - не грузится флешролик, т.е. белый экран с тремя точками посередине. Причем если флешролик подменить на другой - он нормально воспроизводится шарповой прогой. Т.е. проблема в моем ролике, но никак не пойму - в чем дело может быть. Кто-нибудь может подсказать? на обеих машинах ХР, на тестовой только урезанная версия. свежую версию флешплеера поставил вроде, што еще ему может понадобиться? )

Добавлено через 8 минут
да, и сам ролик на моей машине запускается, на тестовой - нет

Добавлено через 17 минут
ай-ай-ай, вру! )) на моей машине ролик тоже не запускается - ругается на ExternalInterface: говорит, ExternalInterface не доступен в этом контейнере - нужны браузеры. Чем его не устраивает контейнер в виде моей проги? причем именно на тестовой машине...

wvxvw 01.06.2011 17:22

http://code.google.com/p/e4xu/source...UI.Designer.cs
Довольно давно делал... и код совсем даже не показателен... но, по крайней мере работает вроде :) Там же рядом есть флешевый mp3 плеер, который он загружает (мне тогда ничего другого в голову не пришло, кроме как загрузить флешку для проигрывания mp3.

zxcv 01.06.2011 19:47

спасибо за пример, но там маловато общения м-ду флешем и шарпом ))

устранил проблему с ExternalInterface - начал ругаться: "переменная такая-то не определена". Такое впечатление, што на содержимое библиотеки ругается... и по кнопкам и по таблицам и по Component Assets прошелся... и именно на тестовой машине... чего же ему там не хватает?

zxcv 06.06.2011 14:04

ежели кому это поможет... В общем проблема устранилась обновлением винды.

zxcv 17.06.2011 11:05

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

во флеше вызывается fscommand во внешнюю среду, которой является прога на шарпе. В этой проге выполняется код, затем вызывается функция флеша, зарегистрированная в ExternalInterface:
Код AS3:

                function setForwLabel(b:Boolean)
                {
                        forwLabel = b;
                        header.text = forwLabel.toString();
                }

где forwLabel - булева переменная, объявленная глобально, header - просто текстовое поле, куда я вывожу значение forwLabel (для себя, так сказать). Так вот, все отрабатывает нормально, но после вызова fscommand идет проверка этой самой уже измененной переменной, но в ней хранится старое значение на момент проверки:
Код AS3:

                        fscommand("BLA", "BLA-BLA");
 
                        if (forwLabel)
                                gotoAndStop(20);

и переход на кадр 20 не осуществляется.

собственно, вопрос - почему?

Добавлено через 4 минуты
ну т.е. forwLabel устанавливается в true, причем это отображается в header, но для проверки она выглядит как false, т.е. хранит старое значение.

i.o. 17.06.2011 11:19

Цитата:

собственно, вопрос - почему?
насколько помню, fscommand несинхронный.

А setForwLabel вызывается вообще?

zxcv 17.06.2011 11:21

да - в header выводится это значение и по поведению программы в целом могу точно сказать, что вызывается и forwLabel меняет свое значение, но... как бы запоздало штоли.. )

i.o. 17.06.2011 11:54

Цитата:

но... как бы запоздало штоли.. )
читайте внимательнее...
Цитата:

насколько помню, fscommand несинхронный.
Добавлено через 2 минуты
Сделайте так, например
Код AS3:

function setForwLabel(b:Boolean)
{
    forwLabel = b;
    header.text = forwLabel.toString();
 
    if (forwLabel)
        gotoAndStop(20);
}


zxcv 17.06.2011 12:05

ай, што-то я строку про несинхронность пропустил вообще )) прошу прощения ) были такие подозрения, но вроде как выше написали, што это не так... хотя и неточно )
а по поводу примера - forwLabel планировалось использовать для перехода на различные кадры в зависимости от ситуации, так што нужно решать как-то иначе, возможно даже на уровне шарпа - в общем я поразмыслю, спасибо за подсказку! )

i.o. 17.06.2011 12:27

А чего решать то? :)
ExternalInterface как раз синхронный. В обе стороны.

zxcv 17.06.2011 12:37

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

В общем еще раз спасибо! )

Добавлено через 51 секунду
гмм, ну или нет геморра с хмл )))

S-ed 17.06.2011 14:38

zxcv
Добрый человек, коли с COM работаете, подскажите где взять референсы на его методы?
Есть там StopPlay() - что за чудо не понимаю...

zxcv 17.06.2011 15:09

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

S-ed 17.06.2011 17:34

zxcv
Ну и я про шарп. Студия тащит из кома все методы, но как они работают одному богу известно. Нашел половину.

zxcv 17.06.2011 18:05

у меня две девайсины: к одной есть готовая библиотека с описанием методов - просто юзаю их, второй нужны определенные последовательности байт - я ей их и даю, используя SerialPort (методы Write и Read). Дальше я с ними не ковырялся )
А што пишете, ежели не секрет? )

Cross AssembleR 09.09.2011 20:46

Цитата:

Сообщение от zxcv (Сообщение 1000413)

Добавлено через 17 минут
ай-ай-ай, вру! )) на моей машине ролик тоже не запускается - ругается на ExternalInterface: говорит, ExternalInterface не доступен в этом контейнере - нужны браузеры. Чем его не устраивает контейнер в виде моей проги? причем именно на тестовой машине...

Цитата:

Сообщение от zxcv (Сообщение 1000469)
спасибо за пример, но там маловато общения м-ду флешем и шарпом ))

устранил проблему с ExternalInterface - начал ругаться: "переменная такая-то не определена". Такое впечатление, што на содержимое библиотеки ругается... и по кнопкам и по таблицам и по Component Assets прошелся... и именно на тестовой машине... чего же ему там не хватает?

Добрый человек, коли с этим работаете подскажите как вы устранили эту проблему? Или обновление винды это к этому и относится?

zxcv 31.10.2011 17:26

Если это еще актуально...
Да, мне помогло обновление винды, но еще можно попробовать избавить от RSL библиотек - это в настройках FlashIDE где-то ставится.


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

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