我希望有一个工具提示,当鼠标移过组件的不同部分时,它会显示不同的内容。例如,如果它是组件的上半部分,它将显示一个工具提示。如果鼠标位于段的下半部分,则工具提示将是另一个。我有一些我编写的代码返回一个带有字符串的面板。这段代码在另一台计算机上,所以我明天会发布代码。
ActionScript中是否可以为段的不同部分提供不同的工具提示(或工具提示中的不同值)?
我到目前为止的代码是:
MyToolTip.mxml
<?xml version="1.0"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"
implements="mx.core.IToolTip"
alpha=".9" width="325" borderColor="black" borderStyle="solid"
cornerRadius="10" horizontalAlign="center">
<mx:Script><![CDATA[
[Bindable]
public var toolTipText:String = "";
public var _text:String;
[Bindable]
public function get text():String { return _text; }
public function set text(value:String):void {}
]]></mx:Script>
<mx:HBox width="100%" height="100%">
<mx:Text text = "Text here" width = "50%"/>
<mx:Text text = "{toolTipText}" width = "50%"/>
</mx:HBox>
</mx:Panel>
然后是我希望工具提示反对的动作脚本类组件。
public class MyComponent extends mx.containers.VBox {
private var tt:MyToolTip
public function MyComponent() {
this.addEventListener(ToolTipEvent.TOOL_TIP_CREATE, toolTipCreateHandler);
this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
tt = new MyToolTip();
}
override protected function drawFigure():void {
//Need to kick the TOOL_TIP_CREATE event...and needs to be a value (eg a SPACE).
//If blank then no tooltip is created
this.toolTip = " ";
super.drawFigure();
}
private function toolTipCreateHandler(event:ToolTipEvent):void {
var toolTipText:String = "tooltip1";
eventToolTip.toolTipText = toolTipText;
event.toolTip = tt;
}
private function mouseOverHandler(event:MouseEvent):void {
//perhaps I need to be more efficient here and only fire
//when the mouse goes into top half or bottom half
//This does not appear to update the toolTipText in the view
var halfwayUp:Number = getBounds(this).height / 2;
if (event.localY < halfwayUp) {
eventToolTip.toolTipText = "tooltip2";
}
else {
eventToolTip.toolTipText = "tooltip1";
}
}
}
}
如果工具提示已经显示,如何更新工具提示的任何帮助或指示都会很棒。
答案 0 :(得分:2)
是的,它可能,诀窍是知道工具提示是如何工作的:
如果将鼠标悬停在组件上,则会创建工具提示,如果您将鼠标移出则会被销毁。因此,如果您在显示工具提示时更改文本,那么您将看不到更改,因为set toolTip()
函数不会创建新的工具提示(如果已存在)。因此,解决方案是销毁当前显示的工具提示,并创建一个新工具提示。要销毁工具提示,可以将其值设置为空字符串
以下是示例代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
mouseMove="application1_mouseMoveHandler(event)">
<mx:Script>
<![CDATA[
import mx.managers.ToolTipManager;
protected function application1_mouseMoveHandler(event:MouseEvent):void{
if (mouseX < 100) {
testButton.toolTip = ""
testButton.toolTip = "on the left side";
} else {
testButton.toolTip = ""
testButton.toolTip = "on the right side";
}
}
]]>
</mx:Script>
<mx:Button id="testButton" label="test" width="200" height="200" />
</mx:Application>
注意:如果您想在Flex中更多地使用工具提示,您可以使用ToolTipManager.currentToolTip
获取当前工具提示(并修改其属性而不会破坏它)。