我正在flex中设计一个页面,我有一个图像。当用户将鼠标悬停在图像上时,应显示特定文本。这是我编写的 actionScript 代码,但它不起作用(它没有在鼠标悬停事件上显示文本:(
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="100" minHeight="100">
<fx:Script>
private var helpText:String = "Some Text."
private function helpIconEvent(e:MouseEvent):void{
if(e.type == "mouseOver"){
e.currentTarget.helpText.visible = true;
}
}
private function addEventToHelpIcon():void {
helpIcon.addEventListener(MouseEvent.MOUSE_OVER, helpIconEvent);
}
</fx:Script>
<mx:Image id="helpIcon" x="270" y="187" width="50" height="50" mouseOver="addEventToHelpIcon"
source="source_path"/>
任何帮助/见解将不胜感激。
谢谢。
有几个问题:
-
您没有正确添加鼠标悬停侦听器。您实际上是在添加两个事件侦听器,一个在 MXML 中,然后在该事件发生时添加第二个。 只需使用 MXML 侦听器(见下文)。
在 鼠标悬停时运行的函数中,您正在尝试在 String 对象上设置
visible
属性。 字符串本身不会显示任何内容。您可以在工具提示或某个其他 GUI 对象中显示带有标签对象的字符串。 您需要找出要使用的正确 GUI 对象并将文本传递给该对象。
下面是一个非常简单的示例:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="100" minHeight="100">
<fx:Script>
private function onMouseOver():void {
helpLabel.visible=true;
}
private function onMouseOut():void {
helpLabel.visible=false;
}
</fx:Script>
<s:Image id="helpIcon" x="270" y="187"
width="50" height="50"
mouseOver="onMouseOver()" mouseOut="onMouseOut()"
source="source_path"/>
<!-- note the mouse event handlers are so simple in this case, you can also do them in line -->
<s:Image id="alternateMethod" mouseOver="helpLabel.visible=true;"
mouseOut="helpLabel.visible=false;" />
<s:Label id="helpLabel" x="100" y="100" visible="false" text="Some Text."/>
</s:Application>
它认为你的代码应该更像这样,但我不习惯灵活,所以如果我错了,请耐心等待。
private function foo(e:MouseEvent):void {
if(e.type == MouseEvent.ROLL_OVER)
//Do stuff...
}