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鼠标滚轮冲突的问题的更多相关文章

  1. 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编写的 ...

  2. 关于 WebBrowser调用百度地图API 鼠标滚轮缩放地图级别失灵的解决办法

    在桌面程序下 百度地图API的鼠标缩放地图功能可能会失灵无效! 这个原因不是API的问题 小弟试了下在WEB上面是没有问题的 于是考虑可能是WebBrowser的获取焦点问题,于是在主窗体 添加了一个 ...

  3. ThinkPad紧凑型蓝牙键盘(0B47189)鼠标滚轮用法,F1到F12功能键的功能切换以及其他技巧

    入手小红点蓝牙键盘(ThinkPad Compact Bluetooth),手感极佳,小红点特别适合程序员工作,双手无需离开键盘就可以操作鼠标,完全解决肩部.腕部疲劳酸痛问题,程序员健康的大福音! 使 ...

  4. 鼠标滚轮事件MouseWheel

    其实在大多数浏览器(IE6, IE7, IE8, Opera 10+, Safari 5+,Chrome)中,都提供了 "mousewheel" 事件.但杯具的是 Firefox ...

  5. WPF ItemsControl 控件支持鼠标滚轮滑动

    此文章意在解决在WPF中ItemsControl类型的集合控件支持鼠标滚轮操作,并可控制滚动的速度. 第一步:给ItemsControl添加滚轮事件. this.listBox.AddHandler( ...

  6. 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放

    在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...

  7. js鼠标滚轮事件兼容

    JavaScript鼠标滚轮事件 IE6.0首先实现了鼠标的滚轮事件,其良好的交互效果得到认可,随后Opera.chrome.safari等主流浏览器都实现了该效果,不过存在着很大的兼容问题. 大多数 ...

  8. 如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动

    VB6毕竟是很老的产品了,它的代码编辑器垂直滚动条并不能随鼠标的滚轮而滚动,这个问题会让我们在编写代码的时候觉得很不方便,不过还是有一种方法可以解决这个问题的.    先下载一个微软发布的“VB6ID ...

  9. Winform 中panel的mousewheel鼠标滚轮事件触发

    如果将窗体或容器控件(如Panel控件)的AutoScroll属性设置为True时,那么当窗体或Panel容不下其中的子控件时就会出现 滚动条,通过移动滚动条可以上下显示出窗体或Panel中的全部内容 ...

随机推荐

  1. noip2012普及组——质因数分解

    [问题描述]已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. [输入]输入文件名为 prime.in.输入只有一行,包含一个正整数 n. [输出]输出文件名为 prime.out.输出只 ...

  2. linux中Zabbix邮件报警设置配置步骤

    使用外部邮箱账号发送报警邮件设置 配置Zabbix服务端外部邮箱 vi /etc/mail.rc #编辑,添加以下信息 set from=xxx@163.com smtp=smtp.163.com s ...

  3. Html.BeginForm())与Ajax.BeginForm()

     一.@using (Html.BeginForm())参数示例 1.指定表单提交方式和路径等 @using (Html.BeginForm("Index", "Home ...

  4. es6新特性

    变量-------------------------- let, const:必须直接给一个变量赋值.注意,对象的属性或数组成员还是可以改变的. const MY_OBJECT = {some: 1 ...

  5. 目录操作工具类 CopyDir.java

    package com.util; import java.io.*; /** * 1,建立目的目录. 2,遍历源目录. 3,遍历过程中,创建文件或者文件夹. 原理:其实就是改变了源文件或者目录的目录 ...

  6. java生成随机字符串uuid

    GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...

  7. javascript 定义正则表达式

    js中定义正则表达式有两种,使用RegExp和使用字面量. 使用字面量定义时需要注意:必须以/开始,以/结束,就像定义字符串一样("test"). 但是,js的正则表达式可以通过指 ...

  8. 批处理安装APK

    set adbpa=D:\Nexus6\ota51\ADBTool set apkpa=D:\WDJDownload\Apps %adbpa%\adb.exe install %apkpa%\CPU- ...

  9. 在使用Redis的客户端连接工具ServiceStack.Redis要注意的问题

    在使用Redis的客户端连接工具ServiceStack.Redis要注意的问题   Redis是一个非常NB的内存级的数据库,我们可以把很多”热数据“(即读写非常多的数据)放入其中来操作,这样就减少 ...

  10. bootstrap的datetimepicker只选择月份

    本文转载自:http://blog.csdn.net/feng1603/article/details/41869523 直接上代码: //选择年月日的 startView: 2, minView: ...