[ActionScript] AS3解决html与flash鼠标滚轮冲突的问题
JS端:
<script type="text/javascript">
<!--
var winWidth = 0;
var winHeight = 0;
var scrHeight = 0;
function findDimensions() //函数:获取尺寸
{
//获取窗口宽度
if (window.innerWidth)
winWidth = window.innerWidth;
else if ((document.body) && (document.body.clientWidth))
winWidth = document.body.clientWidth;
//获取窗口高度
if (window.innerHeight)
winHeight = window.innerHeight;
else if ((document.body) && (document.body.clientHeight))
winHeight = document.body.clientHeight; //通过深入Document内部对body进行检测,获取窗口大小
if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth)
{
winHeight = document.documentElement.clientHeight;//窗口的高度
winWidth = document.documentElement.clientWidth; } //scrHeight = document.documentElement.scrollTop;//滚去的高度
scrHeight = getScrollTop();//滚去的高度
sendToActionScript(winWidth+"_"+winHeight+"_"+scrHeight);//alert(winWidth+"_"+winHeight+"_"+scrHeight);
}
//findDimensions(); //调用函数,获取数值
window.onresize=findDimensions;
window.onscroll=findDimensions;
//window.onload = findDimensions;
//setTimeout("sendToActionScript(winWidth+'_'+winHeight+'_'+scrHeight)",5000);
//setTimeout("findDimensions()",5000);
/**
* 获取滚动条距离顶端的距离
* @return {}支持IE6 火狐 谷歌浏览器
*/
function getScrollTop() {
var scrollPos;
if (window.pageYOffset) {
scrollPos = window.pageYOffset; }
else if (document.compatMode && document.compatMode != 'BackCompat')
{
scrollPos = document.documentElement.scrollTop;
}else if (document.body) {
scrollPos = document.body.scrollTop;
}
return scrollPos;
}
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
function sendToActionScript(value) {
thisMovie("FlashAndHtmlWheelConflict").sendToActionScript(value);
}
function wheelToFlash(boolean){
if(boolean){
disabledMouseWheel();
}else{
window.onmousewheel = document.onmousewheel = findDimensions;
}
} /**
* 禁用鼠标滚轮事件
* @return {}支持ie9、chrome、opera Firefox
*/
function disabledMouseWheel() {
if (document.addEventListener) {
document.addEventListener('DOMMouseScroll', scrollFunc, false);
}//W3C
window.onmousewheel = document.onmousewheel = scrollFunc;//IE/Opera/Chrome
}
function scrollFunc(evt) {
evt = evt || window.event;
if(evt.preventDefault) {
// Firefox
evt.preventDefault();
evt.stopPropagation();
} else {
// IE
evt.cancelBubble=true;
evt.returnValue = false;
}
return false;
}
//window.onload=disabledMouseWheel;
//-->
</script>
AS端:
package
{
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.external.ExternalInterface;
import flash.text.TextField; /**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-9-4 上午12:11:13
*
*/
[SWF(height="1000",width="800")]
public class FlashAndHtmlWheelConflict extends Sprite
{
private var _t:TextField;
private var _wheelH:Number = 0;
private var _htmlW:Number;
private var _htmlH:Number;
private var _scrollH:Number; private var _sp1:Sprite;
private var _sp2:Sprite;
public function FlashAndHtmlWheelConflict()
{
init();
external();
}
private function init():void
{
_t = new TextField();
_t.autoSize = "left";
this.addChild(_t);
this.graphics.beginFill(0xff00ff,0.5);
this.graphics.drawRect(0,0,800,1000);
_sp1 = new Sprite();
_sp2 = new Sprite();
_sp1.graphics.beginFill(0x00ff00);
_sp1.graphics.drawRect(0,0,300,500);
_sp1.graphics.endFill();
this.addChild(_sp1);
_sp2.graphics.beginFill(0x00ff00);
_sp2.graphics.drawRect(0,0,300,500);
_sp2.graphics.endFill();
this.addChild(_sp2);_sp2.x = 400;
_sp1.addEventListener(MouseEvent.MOUSE_WHEEL,onMouseWheel1);
_sp2.addEventListener(MouseEvent.MOUSE_WHEEL,onMouseWheel2);
}
private function external():void
{
if (ExternalInterface.available)
{
try
{
ExternalInterface.addCallback("sendToActionScript", onResize);
}
catch(error:Error)
{
trace("Error: " + error);
}
catch(secError:SecurityError)
{
trace("Security error: " + secError);
}
}
else
{
trace("ExternalInterface is not available");
}
}
private function onResize(value:String):void
{
_htmlW = Number(value.split("_")[0]);
_htmlH = Number(value.split("_")[1]);
_scrollH = Number(value.split("_")[2]);
_t.text = "html窗口width:"+_htmlW+"--html窗口height"+_htmlH+"--html滚动height"+_scrollH+"--flash滚动height"+_wheelH;
_t.x = (stage.stageWidth - _t.width)*.5;
_t.y = (stage.stageHeight - _t.height)*.5;
}
private function onMouseWheel1(e:MouseEvent):void
{
_wheelH += e.delta; trace(e.delta,"e.delta");
_t.text = "html窗口width:"+_htmlW+"--html窗口height"+_htmlH+"--html滚动height"+_scrollH+"--flash滚动height"+_wheelH;
_t.x = (stage.stageWidth - _t.width)*.5;
_t.y = (stage.stageHeight - _t.height)*.5;
ExternalInterface.call("wheelToFlash",true);
}
private function onMouseWheel2(e:MouseEvent):void
{
ExternalInterface.call("wheelToFlash",false);
}
private function wheelToFlash(target:DisplayObjectContainer):void
{ }
}
}
[ActionScript] AS3解决html与flash鼠标滚轮冲突的问题的更多相关文章
- Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系
转自zrong's blog:http://zengrong.net/post/1295.htm ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的 ...
- 关于 WebBrowser调用百度地图API 鼠标滚轮缩放地图级别失灵的解决办法
在桌面程序下 百度地图API的鼠标缩放地图功能可能会失灵无效! 这个原因不是API的问题 小弟试了下在WEB上面是没有问题的 于是考虑可能是WebBrowser的获取焦点问题,于是在主窗体 添加了一个 ...
- ThinkPad紧凑型蓝牙键盘(0B47189)鼠标滚轮用法,F1到F12功能键的功能切换以及其他技巧
入手小红点蓝牙键盘(ThinkPad Compact Bluetooth),手感极佳,小红点特别适合程序员工作,双手无需离开键盘就可以操作鼠标,完全解决肩部.腕部疲劳酸痛问题,程序员健康的大福音! 使 ...
- 鼠标滚轮事件MouseWheel
其实在大多数浏览器(IE6, IE7, IE8, Opera 10+, Safari 5+,Chrome)中,都提供了 "mousewheel" 事件.但杯具的是 Firefox ...
- WPF ItemsControl 控件支持鼠标滚轮滑动
此文章意在解决在WPF中ItemsControl类型的集合控件支持鼠标滚轮操作,并可控制滚动的速度. 第一步:给ItemsControl添加滚轮事件. this.listBox.AddHandler( ...
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...
- js鼠标滚轮事件兼容
JavaScript鼠标滚轮事件 IE6.0首先实现了鼠标的滚轮事件,其良好的交互效果得到认可,随后Opera.chrome.safari等主流浏览器都实现了该效果,不过存在着很大的兼容问题. 大多数 ...
- 如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动
VB6毕竟是很老的产品了,它的代码编辑器垂直滚动条并不能随鼠标的滚轮而滚动,这个问题会让我们在编写代码的时候觉得很不方便,不过还是有一种方法可以解决这个问题的. 先下载一个微软发布的“VB6ID ...
- Winform 中panel的mousewheel鼠标滚轮事件触发
如果将窗体或容器控件(如Panel控件)的AutoScroll属性设置为True时,那么当窗体或Panel容不下其中的子控件时就会出现 滚动条,通过移动滚动条可以上下显示出窗体或Panel中的全部内容 ...
随机推荐
- php curl详细说明
CURLOPT_RETURNTRANSFER 选项: curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 如果成功只将结果返回,不自动输出任何内容. 如果失败返回F ...
- 【转】 Ucenter同步登录原理解析
应用中调用函数us_user_synlogin并输出 echo uc_user_synlogin($uid); 解析: 1. 该函数位于client.PHP中 2. 作用实质上是调用ucenter u ...
- Oracle的rownum原理和使用
整理和学习了一下网上高手关于rownum的帖子: 参考资料: http://tech.ddvip.com/2008-10/122490439383296.html 和 http://tenn.jav ...
- 《中日韩联合开发 - Asianux Server 3》(Asianux Server 3.0)[ISO]
中文名: 中日韩联合开发 - Asianux Server 3英文名: Asianux Server 3.0资源格式: 光盘镜像发行时间: 2007年制作发行: 红旗软件(中国)MiracleLinu ...
- azure 云上MySQL最新版本 MySQL5.7.11 批量自动化一键式安装 (转)
--背景云端 以前都喜欢了源码安装mysql,总觉得源码是高大上的事情,不过源码也需要时间,特别是make的时候,如果磁盘和cpu差的话,时间很长很长,在虚拟机上安装mysql尤其甚慢了. 现在业务发 ...
- 【jmeter】JMeter测试MongoDB
JMeter测试MongoDB性能有两种方式,一种是利用JMeter直接进行测试MongoDB,还有一种是写Java代码方式测试MongoDB性能. 第一种方法 1.编写Java代码,内容如下: pa ...
- runliuv, 安卓查看WIFI密码
用RE查看data/misc/wifi/wpa_supplicant.conf或者其他文件名以.conf结尾的文件
- USB 2.0 Spec 微缩版
4.1.1 Bus Topology 最大层数为7,第7层只能是Function不能是Hub,非根Hub最大5级. 5.3 USB Communication Flow Host Controller ...
- Windows2012修改光驱盘符
1.输入diskmgmt.msc打开磁盘管理器 2.找到需要修改的盘符,右键点击修改盘符
- .net下MD5算法和加盐
MD5方法: public static string GetMD5(string sDataIn) { MD5CryptoServiceProvider md5 ...