**Tested: **
Windows XP: FF2.0, Safari, IE6
Mac: FF2.0 (no Right Up, although many will not use this because there theoretically is no use for right up).
Description:
Ever wanted to right click on a website/game? No more context menu.
[COLOR=“DarkOrange”]THIS IS SOOO OLD, so all urls broke:
http://root.templarian.com/index/u/ufile/index.html[/COLOR]
Source:
http://www.templarian.com/u/ufile/index.html
http://www.templarian.com/u/ufile/swfobject.js (used to make it easier).
http://www.templarian.com/u/ufile/main.swf (not a source… but required).
http://www.templarian.com/u/ufile/swfoverlay.js
http://www.templarian.com/u/ufile/b.gif (blame IE).
HTML:
<html>
<head>
<title>Testing</title>
</head>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript" src="swfoverlay.js"></script>
<script type="text/javascript">
//SET
function sendKEYUP(key) {
thisMovie(fid).callKU(key);
}
function sendKEYDOWN(key) {
thisMovie(fid).callKD(key);
}
function sendX(x) {
thisMovie(fid).callX(x);
}
function sendY(y) {
thisMovie(fid).callY(y);
}
function sendW(d) {
thisMovie(fid).callW(d);
}
function sendLU() {
thisMovie(fid).callLU();
}
function sendLD() {
thisMovie(fid).callLD();
}
function sendMU() {
thisMovie(fid).callMU();
}
function sendMD() {
thisMovie(fid).callMD();
}
function sendRD() {
thisMovie(fid).callRD();
}
function sendRU() {
thisMovie(fid).callRU();
}
</script>
<body>
<div onKeyDown="return getKeyDown(event)" onKeyUp="return getKeyUp(event)" onMouseDown="return getMouseDown(event)" onMouseUp="return getMouseUp(event)" onClick="return dont(event)" onDblClick="return dont(event)" oncontextmenu="return dont(event)">
<div id="overlay" style="width:100%;height:100%;position:absolute;top:0px;left:0px;z-index: 1;background:url(b.gif);"></div>
<div id="flashcontent" style="width:100%;height:100%;position:absolute;top:0px;left:0px;z-index: 0;">This text is replaced by the Flash movie.</div>
</div>
<script type="text/javascript">
SWFOverlay("flashcontent","ExternalInterfaceExample","overlay");
var so = new SWFObject("main.swf", "ExternalInterfaceExample", "100%", "100%", "9", "#336699");
so.addParam("wmode", "transparent");
so.addParam("allowScriptAccess", "always");
so.write("flashcontent");
</script>
</body>
</html>
AS3
package {
import flash.display.Sprite;
import flash.events.*;
import flash.external.ExternalInterface;
import flash.text.TextField;
import flash.utils.Timer;
import flash.text.TextFieldType;
import flash.text.TextFieldAutoSize;
import flash.ui.Keyboard;
public class ExternalInterfaceExample extends Sprite {
public var output:TextField;
public var txtX:TextField = new TextField();
public var txtY:TextField = new TextField();
public var shiftDown:Boolean, capsLock:Boolean;
public function ExternalInterfaceExample() {
output = new TextField();
output.x = 10;
output.y = 25;
output.width = 780;
output.height = 450;
output.multiline = true;
output.wordWrap = true;
output.selectable = false;
output.border = true;
output.text = "Initializing...
";
addChild(output);
txtX.x = 20;
txtX.y = 480;
txtX.width = 250;
txtX.height = 20;
txtX.border = true;
txtX.selectable = false;
addChild(txtX);
txtY.x = 20;
txtY.y = 500;
txtY.width = 250;
txtY.height = 20;
txtY.border = true;
txtY.selectable = false;
addChild(txtY);
AddJavascriptCallBack("callX", callX);
AddJavascriptCallBack("callY", callY);
AddJavascriptCallBack("callKD", callKD);
AddJavascriptCallBack("callKU", callKU);
AddJavascriptCallBack("callLD", callLD);
AddJavascriptCallBack("callLU", callLU);
AddJavascriptCallBack("callRD", callRD);
AddJavascriptCallBack("callRU", callRU);
AddJavascriptCallBack("callMD", callMD);
AddJavascriptCallBack("callMU", callMU);
AddJavascriptCallBack("callW", callW);
}
private function checkJavaScriptReady():Boolean {
var isReady:Boolean = ExternalInterface.call("isReady");
return isReady;
}
private function timerHandler(event:TimerEvent):void {
//output.appendText("Checking JavaScript status...
");
var isReady:Boolean = checkJavaScriptReady();
if (isReady) {
output.appendText("JavaScript is ready.
");
Timer(event.target).stop();
}
}
public function callKD(keyCode:uint):void{
if(keyCode == Keyboard.SHIFT){
shiftDown = true;
}
var asciiCode:uint = GetAsciiValueFromKeyCode(keyCode, shiftDown || capsLock);
output.appendText("KD: " + String.fromCharCode(asciiCode) + "
");
}
public function callKU(keyCode:uint):void{
if(keyCode == Keyboard.SHIFT){
shiftDown = false;
}
if(keyCode == Keyboard.CAPS_LOCK){
capsLock = !capsLock;
}
var asciiCode:uint = GetAsciiValueFromKeyCode(keyCode, shiftDown || capsLock);
output.appendText("KU: " + String.fromCharCode(asciiCode) + "
");
}
//Mouse X Position
public function callX(x_:Number):void {
txtX.text = x_.toString();
}
//Mouse Y Position
public function callY(y_:Number):void {
txtY.text = y_.toString();
}
//Mouse Left Button Down
public function callLD():void {
output.appendText("LD
");
}
//Mouse Left Button Up
public function callLU():void {
output.appendText("LU
");
}
//Mouse Right Button Down
public function callRD():void {
output.appendText("RD
");
}
//Mouse Right Button Up
public function callRU():void {
output.appendText("RU
");
}
//Mouse Middle Button Down
public function callMD():void {
output.appendText("MD
");
}
//Mouse Middle Button Up
public function callMU():void {
output.appendText("MU
");
}
//Mouse Wheel Delta
public function callW(delta_:int):void {
output.appendText("Mouse WheelDelta: " + delta_.toString() + "
");
}
public function AddJavascriptCallBack(ID_:String, callback_:Function):void {
if (ExternalInterface.available) {
try {
//output.appendText("Adding callback...
");
ExternalInterface.addCallback(ID_, callback_);
} catch (error:SecurityError) {
output.appendText("A SecurityError occurred: " + error.message + "
");
} catch (error:Error) {
output.appendText("An Error occurred: " + error.message + "
");
}
} else {
output.appendText("External interface is not available for this container.
");
}
}
public function GetAsciiValueFromKeyCode(keyCode:uint, shiftDown_:Boolean):uint {
if(shiftDown_){
if(keyCode >= 65 && keyCode <= 90){
return keyCode;
}
switch(keyCode){
case 48://)
return 41;
break;
case 49://!
return 33;
break;
case 50://@
return 64;
break;
case 51://#
return 35;
break;
case 52://$
return 36;
break;
case 53://%
return 37;
break;
case 54://^
return 94;
break;
case 55://&
return 38;
break;
case 56://*
return 42;
break;
case 57://(
return 40;
break;
case 219://{
return 123;
break;
case 221://}
return 125;
break;
case 220://|
return 124;
break;
case 186://:
return 58;
break;
case 222://"
return 34;
break;
case 188://<
return 60;
break;
case 190://>
return 62;
break;
case 191://?
return 63;
break;
case 189://_
return 95;
break;
case 187://+
return 43;
break;
case 192://~
return 126;
break;
}
}else{
if(keyCode >= 65 && keyCode <= 90){
return keyCode+32;
}
if(keyCode >= 48 && keyCode <= 57){
return keyCode;
}
switch(keyCode){
case 219://[
return 91;
break;
case 221://]
return 93;
break;
case 220://\
return 92;
break;
case 186://;
return 58;
break;
case 222://'
return 39;
break;
case 188://,
return 44;
break;
case 190://.
return 46;
break;
case 191:///
return 47;
break;
case 189://-
return 45;
break;
case 187://=
return 61;
break;
case 192://`
return 96;
break;
}
}
return keyCode;
}
//End of JAVASCRIPT functions
}
}
…i guess i’ll give credits to Sirisian down here at the bottom for writing the AS3.