![]() |
|
||||||||||
|
|||||
|
Встроил ролик в программу на Delphi через ActiveX-компонент.
Вызываю следующую функцию (на haxe): private function ExGetCamList():Xml
{
var s:Xml = Xml.createElement('root');
var i:MyCam;
for(i in cameras)
{
var c:Xml;
c = Xml.createElement('cam');
c.set("x", Std.string(i._x));
c.set("y", Std.string(i._y));
c.set("name", i.caption);
s.addChild(c);
}
trace(s.toString());
return s;
}
s := ShockwaveFlash1.CallFunction(
'<invoke name="GetCamList" resulttype="xml"></invoke>');
ShowMessage(s);
Как в анекдоте: "Что я делаю неправильно?". заранее благодарю. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Во Flash есть класс XML, но никак не «Xml». Приведенный код неверен.
Вы пытаетесь вызвать функцию с именем GetCamList, а описываете ExGetCamList? |
|
|||||
|
Цитата:
2. Я вызываю AddCallBack(): Функция вызывается, но падает программа на Flash написанная |
|
|||||
|
Регистрация: Apr 2007
Адрес: Мишень на карте России
Сообщений: 95
|
Собственно вот из семплов которые идут с компонентом
во флеше пишем функцию которую в дальнейшем вызовем из делфи import flash.external.*;
ExternalInterface.addCallback("CallMeFromApplication", this, InternalFunction);
function InternalFunction(str: String): String {
TextArea1.text = str;
return "The function was called successfully";
}
и получаем ответ от флеша procedure TForm1.Button3Click(Sender: TObject);
var
Response: WideString;
begin
Response := FlashPlayerControl1.CallFunction('<invoke name="CallMeFromApplication" returntype="xml"><arguments><string>Some text for TFlashPlayerControl</string></arguments></invoke>');
ShowMessage(Format('The function returned: %s', [ Response ] ));
end;
и ещё вариант во флешке на кнопке в делфе (родимой) в событии onflashcalll procedure TForm1.FlashPlayerControl1FlashCall(ASender: TObject;
const request: WideString);
begin
FlashPlayerControl1.SetReturnValue('<string>Current time is: ' + TimeToStr(Time) + #13#10 + 'This info is returned by TMainForm.FlashPlayerControl1FlashCall()</string>');
end;
PS кто ищет тот найдёт!
__________________
Lepricon Flash ICQ |
|
|||||
|
Благодарю, но я немного не это спрашивал.
Все это ясно, но не ясно, что нужно возвращать из функции, returntype, которой установлен в xml??? Когда возвращаю экземпляр класса Xml в haxe приходит кирдык программе в ролике. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Попробуйте String возвращать.
|
|
|||||
|
Так и делаю. Благодарю за ответы.
|
|
|||||
|
Регистрация: Nov 2006
Сообщений: 26
|
У меня проблема с тем же ExternalInterface. Внедряю flash ActiveX компонент в приложение VC++ через MFC. ExternalInterface.call() прекрасно работает, а вызов функции AS из контейнера - ни в какую.
Код AS: function cally():String
{
return "callys invoke";
}
ExternalInterface.addCallback("ska",cally);
При вызове вылетает пустое окно ошибки. |
|
|||||
|
извини, конечно, чебуратор, за мои сомнения, но ты точно во флэшке не забыл написать примерно следующее:
import flash.external.*; var methodName:String = "ska"; var instance:Object = null; var method:Function = cally; var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method); ![]() А так вроде бы все правильно... <null/> писать совсем не обязательно. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|