0
下面是一个简单的Flex动作脚本项目的代码。精灵部分覆盖超链接。发生什么事情是,当你将鼠标悬停在精灵上时,如果你还在超链接上悬停,超链接将被激活。我想阻止这一点。我希望只有当鼠标悬停在它上面时才能激活超链接 - 但是当房屋悬停在覆盖它的精灵之外时不会。小孩Sprite如何防止鼠标事件到达其父项?
我们这里有一个精灵,它是超链接所在的文本字段的子节点。因此,问题是(我认为):子显示对象如何中断事件流,以便mouseover事件永远不会到达父项?
package {
import flash.display.Sprite;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TextEvent;
import flash.external.ExternalInterface;
import flash.filters.BevelFilter;
import flash.geom.Rectangle;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.text.Font;
import flash.text.StyleSheet;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.utils.setTimeout;
public class SpriteHyperlinkTest extends Sprite
{
private var style : StyleSheet = new StyleSheet();
public function SpriteHyperlinkTest()
{
createOutputTextField();
}
public var output_txt : TextField;
private function createOutputTextField() : void {
////////////// SETUP TEXTFIELD ///////////////
var hover : Object = new Object();
hover.fontWeight = "bold";
hover.color = "#0000FF";
var link : Object = new Object();
link.fontWeight = "bold";
link.textDecoration = "underline";
link.color = "#555555";
var active : Object = new Object();
active.fontWeight = "bold";
active.color = "#FF0000";
var visited : Object = new Object();
visited.fontWeight = "bold";
visited.color = "#cc0099";
visited.textDecoration = "underline";
style.setStyle("a:link", link);
style.setStyle("a:hover", hover);
style.setStyle("a:active", active);
style.setStyle(".visited", visited);
output_txt = new TextField();
output_txt.backgroundColor = 0xFFFFFF;
output_txt.background = true;
//output_txt.embedFonts = true;
output_txt.wordWrap = true;
output_txt.multiline = true;
output_txt.name = "output_txt";
output_txt.x = 100;
output_txt.y = 100;
output_txt.width = 300;
output_txt.height = 200;
output_txt.htmlText = "<b>sample <a href='http://www.google.com'>hyperlink text</a></b>";
addChild(output_txt);
var mySprite:Sprite = new Sprite();
mySprite.graphics.lineStyle(.5,0x000000);
mySprite.graphics.beginFill(0xff0000, 1);
mySprite.alpha = .7;
mySprite.graphics.drawRect(100, 100, 90, 20);
mySprite.graphics.endFill();
mySprite.useHandCursor = true;
mySprite.mouseChildren = true;
mySprite.buttonMode = true;
mySprite.name = "Sprite1";
this.addChild(mySprite);
output_txt.styleSheet = style;
}
}
}
是的,对,我的错误,谢谢。但问题仍然存在,如果正确地转述:如何让鼠标悬停事件只适用于精灵当光标结束? – David 2009-10-11 13:36:23
我测试了你的代码。即使从精灵中移除usehandcursor和buttonmode之后,文本字段也会将鼠标移过。有趣的是,它不会点击鼠标。看起来像一个错误。让我们看看是否有人提出解释。 – Amarghosh 2009-10-11 13:51:25
好的,好吧,考虑到这篇文章的标题是错误的/误导性的,让我重新编辑它并重新发布。 – David 2009-10-11 23:01:46