0

我正在设计一个 flex 页面,我有一个图像。当用户将鼠标悬停在图像上时,应显示特定文本。这是我编写的 actionScript 代码,但它不起作用(它没有在 mouseOver 事件上显示文本:(

  <?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"/>    

任何帮助/见解将不胜感激。

谢谢。

4

2 回答 2

2

有几个问题:

  • 您没有正确地将鼠标悬停在侦听器上。您实际上添加了两个事件侦听器,一个在 MXML 中,然后当该事件发生时您添加第二个。只需使用 MXML 侦听器(见下文)。

  • 在鼠标悬停时运行的函数中,您试图visible在 String 对象上设置属性。String 本身不会显示任何内容。您可以在工具提示或其他 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>
于 2012-05-31T21:10:18.767 回答
0

它认为你的代码应该更像这样,但我不习惯灵活,如果我错了,请多多包涵。

private function foo(e:MouseEvent):void {
if(e.type == MouseEvent.ROLL_OVER)
       //Do stuff...
}
于 2012-05-31T20:58:04.137 回答