Actionscript-Javascript Interaction
From Wikicliki
I needed to make a html file with embedded flash that had the javascript on the html page triggering events in the flash and vice versa. This is the final solution which was used.
HTML
Actionscript
COLOURWANG = using prototype to define the clearRGB function for the mouseOut FUNCTIONWANG = defines the mouseovers and mouseouts colour changes COUNTRYFUNCTIONWANG = defines the rollovrs and rollouts for the mouseovers and mouseouts hover captions functions (for each specific movieclip) WORDWANG = defines the hover caption function EXTERNALINTERFACEWANG = externalinterface callback that allows Actionscript to access the Javascript functions (by declaring them in advance)
import flash.external.ExternalInterface; // COLOURWANG! Color.prototype.clearRGB = function(){ this.setTransform({ra:100, rb:0,ga:100,gb:0,ba:100,bb:0,aa:100,ab:0}); } // FUNCTIONWANG! function countryOver(id) { var newColor = new Color(eval(id)); newColor.setRGB(0x2A87AC); } function countryOut(id) { var newColor = new Color(eval(id)); newColor.clearRGB(); } function countryOverHTML(id){ ExternalInterface.call("countryMouseOver",id); } function countryOutHTML(id){ ExternalInterface.call("countryMouseOut",id); } // COUNTRYFUNCTIONWANG! BM.onRollOver = function() { countryName(true, "Bermuda", this); countryOver("BM"); countryOverHTML("BM"); this.onRollOut = function() { countryName(false); countryOut("BM") countryOutHTML("BM"); }; }; // WORDWANG! countryName = function (showCaption, captionText, bName) { if (showCaption) { _root.createEmptyMovieClip("hoverCaption", this.getNextHighestDepth()); cap.desc.text = captionText; cap._width = 8*cap.desc.text.length; cap._alpha = 75; hoverCaption.onEnterFrame = function() { cap._x = _root._xmouse; if ((cap._x-(cap._width/2))<0) { cap._x = cap._width/2; }else if((cap._x + (cap._width/2))>330){ cap._x = 330 - (cap._width/2); }else{ } cap._y = _root._ymouse-15; cap._visible = true; }; } else { delete hoverCaption.onEnterFrame; cap._visible = false; } }; // EXTERNALINTERFACEWANG! var method1:Function = countryOver; var method2:Function = countryOut; var instance:Object = null; ExternalInterface.addCallback("textMouseOver", instance, method1); ExternalInterface.addCallback("textMouseOut", instance, method2);