FLASH中鼠标悬停在某按钮上显示某个图层内容,移开后该图层消失.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FLASH中鼠标悬停在某按钮上显示某个图层内容,移开后该图层消失.相关的知识,希望对你有一定的参考价值。
我想在flash中图层1上添加几个按钮,比如bt1,bt2.
鼠标悬停在bt1上就显示图层2和图层1内容,在bt2上悬停就显示图层3和图层1的内容,图层2消失,如果鼠标没停留在任何按钮上,则只显示图层1的能容,试着写了如下代码,但是提示报错.
bt1.on(rollOver) = function()tc1._visible = false;;
bt1.on(rollOut) = function()tc1._visible = true;
bt1和tc1分别为按钮1和图层2的实例名,报错为:
**错误** 场景=场景 1, 图层=图层 1, 帧=1:第 1 行: '.' 运算符后应该有字段名称。
bt1.on(rollOver) = function()tc1._visible = false;;
**错误** 场景=场景 1, 图层=图层 1, 帧=1:第 2 行: '.' 运算符后应该有字段名称。
bt1.on(rollOut) = function()tc1._visible = true;
ActionScript 错误总数:2 报错:2
求高手指导.
AS2,如果是写在帧上应该是
btn1.onRollOver = function()
//代码实现
;
如果你写在原件上应该是
on(rollOver)
//代码实现
AS3应该写在帧上
btn1.addEventListener(MouseEvent.ROLL_OVER,
function(e:MouseEvent)
//代码实现
);追问
flash不是太会,我的意思就是.有一个图层是一直显示的,叫图层1,其余的就是需要显示的图层,图层1上有一些按钮.
就是想实现,鼠标悬停在一个按钮上,就把某一个图层和图层1一起显示出现,鼠标移开某图层消失,图层1依旧在.
因为AS3和AS2的元件属性名和事件写法都有很大区别,你必须看你是AS几的代码。
前面我已经写明了不同版本写在不同地方的实现方式,使用到的事件就2个:rollOver和rollOut,分别是鼠标覆上和移开的事件;另外你要清楚一个问题,图层是不可能隐藏起来的,图层只是时间轴上的,你要隐藏只有隐藏图层上的元件,给元件一个实例名,调用其visible / _visible 来调整其隐藏或者显示
要想知道当前文挡使用的脚本版本,在菜单-》文件-》发布设置里,swf项可以看到脚本类型,Action Script 2.0或者3.0
代码写帧上:
tc1._visble=false//先使实例名为tc1的影片剪辑不可见
bt1.onRollOver=function()
tc1._visble=true
//鼠标停在实例名为bt1的按钮上时,tc1可见。
bt1.onRollOut=function()
tc1._visble=false
//鼠标离开实例名为bt1的按钮上时,tc1不可见。
悬停、鼠标悬停和鼠标移出
【中文标题】悬停、鼠标悬停和鼠标移出【英文标题】:Hover, mouseover and mouse out 【发布时间】:2011-05-26 16:33:45 【问题描述】:我正在学习和使用 jQuery,并希望为某些元素显示一个删除图标。
我有一个外部主 div,其中包含元素的包装器数量。在元素包装器内部,我想在用户将鼠标悬停在元素包装器上时显示一个删除图标,并在用户移出元素包装器时将其删除。
使用mouseover
和mouseout
,我可以显示和删除图标,但是只要我将鼠标移到删除图标上,它就会被删除,因为它会触发元素包装器的mouseout
事件。我做错了什么?
【问题讨论】:
在“doh!”中片刻,我将缺少的 CSS 答案添加到我的答案中。你实际上并没有说你不得不用 JavaScript 来做这件事,对吗? :-) 但是还有一个 JavaScript 选项(如果你想要 IE6 支持,你将需要它)。 【参考方案1】:两种选择:
-
CSS 的
:hover
伪类(但前提是您不必支持 IE6)
mouseenter
和 mouseleave
事件
CSS 的 :hover
伪类
如果您不需要 IE6 支持,您可以使用 :hover
伪类让浏览器完成所有工作:
/* Don't show `child` elements inside `parent` elements...*/
parent child
display: none;
/* ...unless the `parent` element is being hovered over */
parent:hover child
display: block; /* or inline-block or whatever */
Live example
但是,IE6 不支持 :hover
伪类,a
元素除外。 IE7+ 和所有最近的其他浏览器都可以。
mouseenter
和 mouseleave
事件
如果 CSS 不适合您,您正在寻找 mouseenter
和 mouseleave
事件,它们是 IE 特定的,但在所有其他浏览器上由 jQuery 模拟。 jQuery 甚至还有一个方便的函数hover
,用于将处理程序连接到这两个事件,这样您就可以轻松完成您想要做的事情。
$(...your parent element...).hover(
function()
// Called when the mouse enters the element
,
function()
// Called when the mouse leaves the element
);
这是一个完整的live example:
HTML:
<div>Hover over me <span class='del'>[X]</span></div>
<div>And me <span class='del'>[X]</span></div>
<div>And me <span class='del'>[X]</span></div>
使用 jQuery 的 JavaScript:
$('div').hover(
function()
$(this).find('span.del').show();
,
function()
$(this).find('span.del').hide();
);
mouseover
和 mouseout
遇到问题的原因是它们冒泡,因此父元素上的 mouseout
处理程序从底层元素中看到冒泡的 mouseout
当您的鼠标移动到删除元素时。 mouseenter
和 mouseleave
不会冒泡,所以他们没有这个问题。
【讨论】:
嘿,谢谢,实际上我已经使用 jquery 使用了这种方法,但就我而言,我想在悬停时附加图标。使用上述方法,当我将鼠标移到图标上时,多个图标会添加到元素包装器中。如何阻止这种情况? @KutaPHP:根据您的描述,听起来您尝试使用mouseover
和mouseout
而不是mouseenter
和mouseleave
。同样,它们是不同的事件,它们的行为也不同(请参阅上面答案末尾的注释)。但如果你真的使用mouseenter
和mouseleave
,听起来你并没有删除mouseleave
上的元素。如果你这样做,效果很好:jsbin.com/umalu4/2 但是添加到 DOM 和从 DOM 中删除是比显示/隐藏更重的操作,建议显示/隐藏。
嘿,再次感谢...我修复了这个...我直接添加图像,我将它作为背景添加到跨度中,我做到了。 :)【参考方案2】:
您是否尝试过改用 mouseenter
和 mouseleave
事件?
【讨论】:
【参考方案3】:您可以在 jQuery 事件 onmouseover 和 onmouseout 上应用样式。当用户将鼠标悬停在菜单上时,此事件将触发,您可以在那里设置效果。
<style type="text/css">
.menu
background-color: #CDDC39;
list-style: none;
margin: 100px;
padding: 0;
width: 10em;
.menu li
margin: 0;
padding: 5px;
.menu a
color: #333;
</style>
<ul class="menu">
<li onmouseover="this.style.backgroundColor='#F44336';" onmouseout="this.style.backgroundColor='transparent';" style="background-color: transparent;">
<a href="http://www.infinetsoft.com/">learn dot net skills</a>
</li>
<li onmouseover="this.style.backgroundColor='#F44336';" onmouseout="this.style.backgroundColor='transparent';" style="background-color: transparent;">
<a href="http://www.infinetsoft.com/htmltry">Work out html</a>
</li>
<li onmouseover="this.style.backgroundColor='#F44336';" onmouseout="this.style.backgroundColor='transparent';" style="background-color: transparent;">
<a href="http://www.infinetsoft.com/Category/JQuery/9/1">jQuery tutorials</a>
</li>
</ul>
for more details
【讨论】:
以上是关于FLASH中鼠标悬停在某按钮上显示某个图层内容,移开后该图层消失.的主要内容,如果未能解决你的问题,请参考以下文章