将鼠标悬停在动作脚本上



我正在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...
}

相关内容

  • 没有找到相关文章

最新更新