Delphi'мен AS3 арасындағы байланыс
- rymbek
- Үйдегі эксперименттер / 1 маусым 2016, 11:30
- 1591
Сәлем! Қазір бір жоба жасап жатқанбыз Adobe Flash'пен. Бұл жобада әсіресе қиын болған жерлерін үзінді келтіріп кетсем дееп. Сонымен, swf файлды жүктеп тұрған Delphi қосымша (жалпы Дельфидің орнында кез-келген программалау ортасы болуы мүмкін) араларындағы мәлімет алмасу.
AS 2-ші нұсқасында бұл оңайырақ, әрі түсініктірек болған. SWF файлды жүктейтін ActiveX компоненттің SetVarible, GetVarible деген сияқты әдістері болған. Бірақ AS3'те жазылған флеш-жобаларға ол әдіс әсер етпейд. Орысшасы бар, ағылшыншасы бар, форумдарды шарлап, шарлап, шешімін таптым. Қатты терледім демес едім, бірақ қиындау болды, өйткені ешбір жерде нақты шешімі берілмеген еді (әлде нашар іздедім).
Сонымен, тапқан шешімім мынандай: алдымен AS3'те мынандай функция жазып аламыз.
Скрин:
Delphi'дегі код:
Мысал осында
AS 2-ші нұсқасында бұл оңайырақ, әрі түсініктірек болған. SWF файлды жүктейтін ActiveX компоненттің SetVarible, GetVarible деген сияқты әдістері болған. Бірақ AS3'те жазылған флеш-жобаларға ол әдіс әсер етпейд. Орысшасы бар, ағылшыншасы бар, форумдарды шарлап, шарлап, шешімін таптым. Қатты терледім демес едім, бірақ қиындау болды, өйткені ешбір жерде нақты шешімі берілмеген еді (әлде нашар іздедім).
Сонымен, тапқан шешімім мынандай: алдымен AS3'те мынандай функция жазып аламыз.
import flash.external.ExternalInterface; flash.external.ExternalInterface.addCallback('setText', setText); function setText(str:String) { sampleText.text = str; return "for Codeo"; }
Скрин:
Delphi'дегі код:
procedure TForm1.Button1Click(Sender: TObject); var callFuncText, callResult:string; begin callFuncText := '<invoke name=''setText'' returntype=''xml''><arguments><string>'+Edit1.Text+'</string></arguments></invoke>'; callResult := sampleSWF.CallFunction(callFuncText); Label2.Caption := callResult; end;
Мысал осында
-
+3