Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.09.2006, 10:00
MaxxSoft вне форума Посмотреть профиль Отправить личное сообщение для MaxxSoft Найти все сообщения от MaxxSoft
  № 1  
Ответить с цитированием
MaxxSoft

Регистрация: Sep 2006
Сообщений: 16
Question Интеграция Flash ролика в Delphi проект

Для работы с Flash в Delphi использую ActiveX (компонент TShockwaveFlash)
Передача данных в ролик осуществляется с помощью метода
Код:
procedure TShockWaveFlash.SetVariable(const: name: WideString; const value: WideString);
что является не совсем удобным в ряде случаев, так как после установки значения переменной необходимо выполнить какие-либо действия.
Для решения этой проблемы создаю дополнительный кадр, в котором вызываются нужные функции и, после установки значения переменной, этот кадр проигрываю, примерно так:
Код:
with swMovie do
begin
  SetVariable('MenuVisible', '1');
  GotoFrame(FrameNum);
  Play;
end;
В кадре FrameNum:
Код:
Menu._visible = MenuVisible > 0;
Полученное решение крайне неудобное. В то же время у компонента TShockWaveFlash объявлен метод:
Код:
function TShockwaveFlash.CallFunction(const request: WideString): WideString;
который, судя по названию, должен вызывать пользовательскую функцию в ролике. Тем не менее эксперименты с использованием данного метода ни к чему не привели. При передаче любого параметра вылетает TOleException "Неопознанная ошибка".
Может быть кто-нибудь использовал данную функцию?

Старый 19.09.2006, 11:20
FourSide вне форума Посмотреть профиль Отправить личное сообщение для FourSide Найти все сообщения от FourSide
  № 2  
Ответить с цитированием
FourSide

Регистрация: Jul 2006
Сообщений: 387
Отправить сообщение для FourSide с помощью Skype™
В Delphi писал так:
flash.setVariable('varname', 'varvalue');

А во флэше на глобальную переменную вешал функцию отлова изменения значения методом watch.

Старый 19.09.2006, 12:19
MaxxSoft вне форума Посмотреть профиль Отправить личное сообщение для MaxxSoft Найти все сообщения от MaxxSoft
  № 3  
Ответить с цитированием
MaxxSoft

Регистрация: Sep 2006
Сообщений: 16
Цитата:
Сообщение от FourSide
А во флэше на глобальную переменную вешал функцию отлова изменения значения методом watch.
Спасибо за информацию, но что-то не получается с наскока разобраться в использовании watch.
В хелпе написано:
Цитата:
usage
myObject.watch( prop, callback [, userData] )
Parameters
prop A string indicating the name of the object property to watch.

callback The function to invoke when the watched property changes. This parameter is a function object, not a function name as a string. The form of callback is callback(prop, oldval, newval, userData).

userData An arbitrary piece of ActionScript data that is passed to the callback method. If the userData parameter is omitted, undefined is passed to the callback method. This parameter is optional.
Правильно ли я понял, вешать этот метод можно только на свойства созданного экземпляра какого-нибудь класса? Или на любую глобальную переменную? Также не совсем понял про второй параметр, вызываемую функцию... Это не имя функции, а сама функция?
Если не сложно напиши небольшой пример кода.

Старый 30.01.2008, 01:11
Arreke вне форума Посмотреть профиль Отправить личное сообщение для Arreke Посетить домашнюю страницу Arreke Найти все сообщения от Arreke
  № 4  
Ответить с цитированием
Arreke
[+3 29.01.08]
 
Аватар для Arreke

Регистрация: May 2004
Адрес: Казахстан
Сообщений: 33
Присоединяюсь к MaxxSoft.
Дырку в поиске протёр, но ответа не нашёл.
Опишите подробно как юзать setVariables() + watch.

Старый 30.01.2008, 11:32
Arreke вне форума Посмотреть профиль Отправить личное сообщение для Arreke Посетить домашнюю страницу Arreke Найти все сообщения от Arreke
  № 5  
Ответить с цитированием
Arreke
[+3 29.01.08]
 
Аватар для Arreke

Регистрация: May 2004
Адрес: Казахстан
Сообщений: 33
Задача наипростейшая, но именно на ней упёрся об стену.
Вообщем на флешке имееся ComboBox, содержимое которого надо загрузить из Delphi. Так понимаю, содержимое ComboBox - строковой массив - ComboBox.labels
Моё решение,

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  i :integer;
begin
  for i:= 1 to 3 do
  ShockwaveFlash1.SetVariable('varComboBox.labels[' + inttostr(i) + ']', inttostr(i));
end;
Ничё не происходит, то есть не могу получить доступ к элементам массива флешки. Или может как сделать varComboBox.addItems() средствами Delphi ?


Последний раз редактировалось etc; 30.01.2008 в 19:37.
Старый 30.01.2008, 12:58
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Arreke, отредактируйте свой пост и оформите код тегами [code][/code].

Старый 30.01.2008, 15:49
Arreke вне форума Посмотреть профиль Отправить личное сообщение для Arreke Посетить домашнюю страницу Arreke Найти все сообщения от Arreke
  № 7  
Ответить с цитированием
Arreke
[+3 29.01.08]
 
Аватар для Arreke

Регистрация: May 2004
Адрес: Казахстан
Сообщений: 33
Спс, __etc, разобрался.

Во флеш:
Код:
_root.st=""
_root.fun=null
_root.fun1=function(){
	varComboBox.addItem(_root.st);
}
var cbFun=function(prop, oldVal, newVal){
	_root[newVal]();
}
_root.watch("fun",cbFun);
В Delphi:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
i :integer;
begin
for i:= 1 to 3 do begin
  ShockwaveFlash1.SetVariable('_root.st', inttostr(i));
  ShockwaveFlash1.SetVariable('fun', 'fun1');
end;
end;
Работает.

Теперь другой, наивный вопрос, зависит ли компонент ShockwaveFlash на Delphi от флеш плеера установленного в системе, то есть будет ли работать мой exe-шник с swf-файлом на компе, где не установлен флешплеер и вообще нет выхода в инет???


Последний раз редактировалось Arreke; 30.01.2008 в 15:52.
Старый 30.01.2008, 19:36
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Arreke, я где-то написал «Создайте новый пост с отредактированным кодом»? Я просил отредактировать существующий пост, благо такая возможность есть. В следующий раз не забывайте оформлять код.

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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