Форум 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);
}



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

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