Flex屏蔽並自定義鼠標右鍵菜單(轉載)


最近手頭有個項目需要屏蔽Flex鼠標右鍵菜單並自定義新的flex鼠標右鍵菜單。通過ContextMenu hideBuiltInItems,還是達不到我要的效果,那該死的幾個選項還是存在,在網上搜刮了很久,發現了Google Code上有一個RightClickManager的項目。通過JavaScript與ActionScript的結合,屏蔽了右鍵,並調用actionscript注冊方法,使用時需要修改Flex生成的html文件,加入 “wmode”, “opaque”,或者直接修改index.template.html.
上代碼:

    AC_FL_RunContent(  
            "src", "${swf}",  
            "id", "${application}",  
            "name", "${application}",  
            "width", "${width}",  
            "height", "${height}",  
            "align", "middle",  
            "menu", "false",  
            "wmode", "opaque",
         "quality", "high",  
            "bgcolor", "${bgcolor}",  
            "allowScriptAccess", "always",  
            "allowNetworking", "all",
         "type", "application/x-shockwave-flash",  
            "pluginspage", "http://www.adobe.com/go/getflashplayer"  
    );

按照自己的需要我稍做了修改,根據不同界面,出現不同的右鍵菜單。在RightClickManager.as文件中定義的JavaScript里面,我做了如下的修改

onIEMouse: function() {
	if (event.button ==2||event.button==0) {
	if(window.event.srcElement.id == RightClick.FlashObjectID &&RightClick.Cache == RightClick.FlashObjectID) {
		RightClick.call(); 
	}
	document.getElementById(RightClick.FlashObjectID).parentNode.setCapture();
	if(window.event.srcElement.id)
	    RightClick.Cache = window.event.srcElement.id;
	}
}



這樣子,就能在FF3,IE6,遨游,chrome2下順利通過,(PS:我的機上就這些瀏覽器,其他沒測)
RightClickHandles.as是用來統一管理右鍵菜單的單例類。RightClickMenuData.as是用於存儲右鍵菜單內容的類。RightClickRegister.as 其實是我修改了FlexSprite.as。
使用說明:
在程序入口new 一下RightClickRegister就屏蔽掉了右鍵
在需要自定義右鍵的界面上注冊右鍵Handle:

RightClickHandles.setHandleFunction(this, RightClickMenuData.Main_MIS,handle);
function handle(item:Object):void{
 trace(item.action);
}

就會出現Main_MIS所指定的菜單內容,點擊菜單后回調handle方法。並且傳過來點擊對象。

另外,如果你的項目對客戶端中文輸入有很高的要求的話,勸你不要對屏蔽右鍵抱太大希望。因為加入了 “wmode”, “opaque”,這對屬性之后,將會對輸入法造成很大的影響。本來還想解決掉右鍵點擊時事件流的捕獲問題,結果發現中文輸入不了,徹底放棄了,偶滴神啊!稍后會上傳源代碼…源碼已上傳:下載地址1 下載地址2

下面說一下副作用:使用此種方法在Flex里屏蔽鼠標右鍵,導致的直接結果就是中文輸入法不正常,啊門!

轉載請注明: 出自 FlexHome
原文鏈接:http://flex.desizen.com/flex-custom-context-menu/

 

 

我更關注:Google Code上有一個RightClickManager的項目  右鍵項目源碼


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com