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. for循环小题

    已知数列1,1,2,3,5,8,…….,N.输出前N项的和: 出1到100之间所有偶数之和 国际象棋问题 已知数列1,1,2,3,5,8,…….,N.输出前N项的和: int a = 1, b = 1 ...

  2. PHP闭包研究

    闭包也就是PHP的匿名函数, 但是和函数不同的是,闭包可以通过use使用函数声明时所在作用域的变量的值. 形式如下 $a = function($arg1, $arg2) use ($variable ...

  3. CARP-VRRP-HSRP

    CARP-VRRP-HSRP http://www.openbsd.org/faq/pf/carp.html

  4. unity, Additive Animtion注意事项

    以下摘自官方文档:(http://docs.unity3d.com/Manual/AnimationScripting.html) Additive animations allow you to o ...

  5. sqlserver快照,启用基于行版本控制的隔离级别

    在sqlserver标准的已提交读(read committed)隔离级别下,读写操作相互阻塞.未提交读(read uncommitted)虽然不会有这种阻塞,但是读操作可能会读到脏数据,这是大部分用 ...

  6. php 自带函数

    memory_get_usage()://查看当前内存使用情况单位 bytes str_repeat("liuhui", 2);//字符串重复指定次数,liuhui重复2次

  7. Linux下dig命令使用

    Dig简介:   Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具.由于一直缺失Dig man page文档,本文就权当一个dig使用向导吧.   Dig的 ...

  8. poj1260 pearls

    题目大意:珠宝店有许多珠宝,你需要每种珠宝各买一定的数目,各种珠宝的价格是不一样的,每种珠宝买的时候都必须多付10颗该珠宝的钱,但一种珠宝可以用比它更贵的珠宝来代替,所以有时候用更贵的珠宝来充数可能更 ...

  9. 如何在VBA窗体中使用 DataGrid 控件?

    1.下载MSDATGRD.cab,下载路径如下:http://www.findthatzipfile.com/search-10500733-hZIP/winrar-winzip-download-m ...

  10. 解密 Uber 数据团队的基础数据架构优化之路

    如果你用过Uber,你一定会注意到它的操作是如此的简单.你一键叫车,随后车就来找你了,最后自动完成支付,整个过程行云流水.但是,在这简单的流程背后其实是用Hadoop和Spark这样复杂的基础大数据架 ...