as3右键响应事件–使用js屏蔽flash的右键菜单
JAVASCRIPT:
[cc lang="js"]
/**
*
* Copyright 2007
*
* Paulius Uza
* http://www.uza.lt
*
* Dan Florio
* http://www.polygeek.com
*
* Project website:
* http://code.google.com/p/custom-context-menu/
*
* --
* RightClick for Flash Player.
* Version 0.6.2
*
*/
var RightClick = {
/**
* Constructor
*/
init: function ( ) {
this.FlashObjectID = "customRightClick";
this.FlashContainerID = "flashcontent";
this.Cache = this.FlashObjectID;
if (window.addEventListener ) {
window.addEventListener ( "mousedown", this.onGeckoMouse ( ), true );
} else {
document.getElementById ( this.FlashContainerID ).onmouseup = function ( ) { document.getElementById (RightClick.FlashContainerID ).releaseCapture ( ); }
document.oncontextmenu = function ( ) { if (window.event.srcElement.id == RightClick.FlashObjectID ) { return false; } else { RightClick.Cache = "nan"; } }
document.getElementById ( this.FlashContainerID ).onmousedown = RightClick.onIEMouse;
}
},
/**
* GECKO / WEBKIT event overkill
* @param {Object} eventObject
*/
killEvents: function (eventObject) {
if (eventObject) {
if (eventObject.stopPropagation ) eventObject.stopPropagation ( );
if (eventObject.preventDefault ) eventObject.preventDefault ( );
if (eventObject.preventCapture ) eventObject.preventCapture ( );
if (eventObject.preventBubble ) eventObject.preventBubble ( );
}
},
/**
* GECKO / WEBKIT call right click
* @param {Object} ev
*/
onGeckoMouse: function (ev) {
return function (ev) {
if (ev.button != 0 ) {
RightClick.killEvents (ev);
if (ev.target.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID ) {
RightClick.call ( );
}
RightClick.Cache = ev.target.id;
}
}
},
/**
* IE call right click
* @param {Object} ev
*/
onIEMouse: function ( ) {
if (event.button> 1 ) {
if (window.event.srcElement.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID ) {
RightClick.call ( );
}
document.getElementById (RightClick.FlashContainerID ).setCapture ( );
if (window.event.srcElement.id )
RightClick.Cache = window.event.srcElement.id;
}
},
/**
* Main call to Flash External Interface
*/
call: function ( ) {
document.getElementById ( this.FlashObjectID ).rightClick ( );
}
}
[/cc]
Actionscript:
[cc lang="actionscript3"]
package {
import flash.display.*;
import flash.external.ExternalInterface;
public class RightClick extends Sprite
{
public function RightClick( )
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
var methodName:String = "rightClick";
var method:Function = onRightClick;
ExternalInterface.addCallback (methodName, method);
}
private function onRightClick( ):void {
var mx:int = stage.mouseX;
var my:int = stage.mouseY;
if (my> 0 && my 0 && mx <stage.stageWidth ) {
// YOUR CODE HERE
}
}
}
}
[/cc]
WINDOWS VISTA
* Internet Explorer 7.0.6001 (16549)
* Firefox 2.0.0.6 (with mouse gestures disabled)
* Maxthon 2 (with mouse gestures disabled)
* Safari 3.0.3 (522.15.5)
Windows XP SP2
* Internet Explorer 6
* Internet Explorer 7
* Maxthon 2 (with mouse gestures disabled)
* FireFox 2 (with mouse gestures disabled)
* Safari 3
* Netscape 8
Mac OSX 10.4.10 (Intel)
* Firefox 2
* Safari 3.0.3
参考:
http://www.uza.lt/blog/2007/08/solved-right-click-in-as3/
DEMO:http://www.uza.lt/rightclick/
AJAX中同时发送多个请求(并发)对象处理方法
[cc lang="js"]
* XMLHttpRequest Object Pool
*
* @author legend
* @link http://www.ugia.cn/?p=85
* @Copyright www.ugia.cn
*/
var XMLHttp = {
_objPool : [],
_getInstance : function ()
{
for (var i = 0 ; i < this . _objPool . length ; i ++)
{
if ( this . _objPool [ i ]. readyState == 0 || this . _objPool [ i ]. readyState == 4 )
{
return this . _objPool [ i ];
}
}
// IE5中不支持push方法
this . _objPool [ this . _objPool . length ] = this . _createObj ();
return this . _objPool [ this . _objPool . length - 1 ];
},
_createObj : function ()
{
if ( window . XMLHttpRequest )
{
var objXMLHttp = new XMLHttpRequest ();
}
else
{
var MSXML = [ 'MSXML2.XMLHTTP.5.0' , 'MSXML2.XMLHTTP.4.0' , 'MSXML2.XMLHTTP.3.0' , 'MSXML2.XMLHTTP' , 'Microsoft.XMLHTTP' ];
for(var n = 0 ; n 0 )
{
url += "&randnum=" + Math . random ();
}
else
{
url += "?randnum=" + Math . random ();
}
open ( method , url , true );
// 设定请求编码方式
setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded; charset=UTF-8' );
send ( data );
onreadystatechange = function ()
{
if ( objXMLHttp . readyState == 4 && ( objXMLHttp . status == 200 || objXMLHttp . status == 304 ))
{
callback ( objXMLHttp );
}
}
}
catch ( e )
{
alert ( e );
}
}
}
};
//示例:
function test(obj)
{
alert(obj.statusText);
}
XMLHttp.sendReq('GET', 'http://www.ugia.cn/wp-data/test.htm', '', test);
XMLHttp.sendReq('GET', 'http://www.ugia.cn/wp-data/test.htm', '', test);
XMLHttp.sendReq('GET', 'http://www.ugia.cn/wp-data/test.htm', '', test);
XMLHttp.sendReq('GET', 'http://www.ugia.cn/wp-data/test.htm', '', test);
alert('Pool length:' + XMLHttp._objPool.length);
[/cc]