[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中的全部内容 ...
随机推荐
- 对OCR文字识别软件的扫描选项怎么设置
说到OCR文字识别软件,越来越多的人选择使用ABBYY FineReader识别和转换文档,然而并不是每个人都知道转换质量取决于源图像的质量和所选的扫描选项,今天就给大家普及一下这方面的知识. ABB ...
- linux包之包管理命令rpm-yum
背景 YUM(Yellow dog Updater, Modified)为多个Linux发行版的前端软件包管理器,例如 Redhat RHEL, CentOS & Fedora. YUM通过调 ...
- unity, 由unity5.2.1升级到5.4.2物体变亮解法
由unity5.2.1升级到5.4.2之后,使用standard shader的物体会变亮. 原因如图: 框中两项是5.4.2多出来的,如果把specular Highlights的勾选去掉,就跟以前 ...
- node-webkit 应用打包发布
方便进行打包,使用了nodejs ,gulp nw-builder 备注 windows 操作系统部分版本需要包含 msvcr100.dll 建议制作安装程序的时候直接包含 为了进行视频以及 ...
- System.AccessViolationException,尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
从事件查看器中发现,IIS不定期崩溃并重启的现象.抓取crash dump文件后,发现能够看到异常,但没有堆栈信息(主要是只会看托管代码的堆栈,非托管的不清楚.),问题表现及dump日志的截图如下: ...
- Asp.net中全局缓存的几种方式
public class StaticCacheTest { private static IDictionary<string, object> _dic; private static ...
- 别样的checkbox
<style type="text/css"> input[type=checkbox] { visibility: hidden; } .slide_check_bo ...
- sphinx 配置sphinx.conf
sphinx的配置文件是在配置的时候最容易出错的了: 基本概念: source:数据源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一个字典检索. ...
- C\C++拾遗------C#程序员重温C\C++之要点
1.开发工具:建议采用VS2012及2013 1).因为VS2012对C++编码实现了自动编排格式(Ctrl E D) 2).提供智能感知(联想输入)功能 相比VS2010及以前版本对于习惯了智能感知 ...
- js键盘事件全面控制详解【转】
js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...