MATLAB to ControlWeb Wizard umožňuje v prostředí ControlWeb používat model navržený původně v MATLAB Simulinku. Na základě správně navrženého matematického modelu v prostředí MATLAB R2006b umožňuje vygenerovat z tohoto prostředí Windows dynamic link library, dále DLL. Toto DLL má formát ovladače pro ControlWeb (v. 5.0), který odpovídá matematickému modelu nadefinovanému v prostředí MATLAB.
procedure OnStartup(); var path=string,''; ok=boolean,false; error=integer,0; begin files.GetREDFullPath('nazev_klipu.swf', &path,&ok,&error); self.LoadMovie(0,path); end_procedure;
var nazevPromenne:Number; this.onEnterFrame = function(){ mujText_txt.text = "Hodnota promenne je " + nazevPromenne; }
procedure OnOutput( Output : real ); begin mujFlash.SetVariable('nazevPromenne' ,str(Output,10)); end_procedure;
StringovaHodnota = val(mujFlash.GetVariable('nazevPromenne'),10);
ActionScript 3 komunikuje s vnějším světem pomocí dvou procedur
komunikace z flashe ven:
flash.external.ExternalInterface.call("názevVnějšíFunkceTřebaVJavaScriptu", parametr1, parametr2,...)
komunikace z vnějšku do flashe:
flash.external.ExternalInterface.addCallback("názevFunkceTřebaVJavaScriptu", nazevFunkceVActionScriptu);
to dobře funguje s Java Scriptem: např. flasová animace v AS3:
může komunikovat s JavaScriptem v prohlížeči a ve vyskakovacím okénku prohlížeče se bude periodicky zobrazovat zpráva o tom, že šnek zalezl nebo vylezl.
zdroj v ActionScriptu:
import flash.external.*; class SnekASlunce extends MovieClip { var snek_mc:MovieClip; var slunce_mc:MovieClip; var obloha_mc:MovieClip; function SnekASlunce() { snek_mc.onVylezlJsem = function() { //šnek zacne lézt ExternalInterface.call("pokus", "vylezl jsem"); _parent.play(); }; snek_mc.onZalezam = function() { //šnek zaleze ExternalInterface.call("pokus", "zalezam"); //šnek se zastavi _parent.stop(); }; slunce_mc.onVychod = function() { if (_parent.snek_mc.jsemZalezlej == true) { _parent.snek_mc.vylez(); } _parent.obloha_mc.rozedniSe(); }; slunce_mc.onZapad = function() { if (_parent.snek_mc.jsemVylezlej == true) { _parent.snek_mc.zalez(); } _parent.obloha_mc.setmiSe(); }; //volání z Flashe ven //ExternalInterface.call("názevFunkceVJavaScriptu", parametr1, parametr2,...) ExternalInterface.call("pokus", "Ahoj z flashe"); //volání do flashe //ExternalInterface.addCallback("názevFunkceVJavaScriptu", nazevFunkceVActionScriptu); } }
zdroj v HTML:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>pokus</title> </head> <body bgcolor="#ffffff"> <!--url's used in the movie--> <!--text used in the movie--> <!-- saved from url=(0013)about:internet --> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="800" height="600" id="pokus" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="pokus.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="pokus.swf" quality="high" bgcolor="#ffffff" width="800" height="600" name="pokus" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> <!-- *************************** --> <!--ručně přidáno do flashem 9 vygenerované html stránky --> <script language="JavaScript"> function pokus(text){ if (text==undefined){ text="iniciální text"; } window.alert(text); } </script> <!-- *************************** --> </body> </html>
Zatím ale neumím komunikovat s CW. Je to důležité, protože nám to dá možnost komunikovat se sofistikovanými objekty uživatelského rozhraní poskládanými ve Flexu (např. s „gumovými grafy“).
JK 18.3.2007