将黑色和红色工具提示显示为语音气球

时间:2011-09-07 16:05:15

标签: flex flex4 flex4.5 tooltip

我正在从纯Flash / AS3移植到Flex 4.5的纸牌游戏:

game

我差不多完成了,但是上面截图中用蓝色标记的“语音气球”丢失了。

那些“演讲气球”淡入,显示红色(如果它们包含心形或钻石字符)或黑色文字,最后淡出。

我正在尝试将这些实现为mx.controls.ToolTip并准备了一个简单的测试用例,其中3个用户由笑脸按钮代表,您可以按“对话”按钮使其成为

test

<?xml version="1.0"?>
<s:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    xmlns:s="library://ns.adobe.com/flex/spark"
    width="400" height="300"
    initialize="init();">

    <fx:Declarations>
        <s:Fade id="fadeIn" alphaFrom="0" alphaTo="1" duration="2000"/>
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import mx.managers.ToolTipManager;

            private var i:uint = 0;

            private function init():void {
                ToolTipManager.enabled = false;
                ToolTipManager.showEffect = fadeIn;
            }

            private function talk():void {
                var str:String = 'Me plays 10' + (i % 2 ? '♥' : '♠');
                // this does not make the ToolTip appear?
                this['user' + (++i % 3)].toolTip = str;
                // how to set color according to isRed(str)?
            }

            private function isRed(str:String):Boolean {
                return (str.indexOf('♦') > 0 || str.indexOf('♥') > 0);
            }
        ]]>
    </fx:Script>

    <s:Button id="user0" horizontalCenter="0" bottom="0" label=":-)" />
    <s:Button id="user1" left="0" top="0" label=":-)" />
    <s:Button id="user2" right="0" top="0" label=":-)" />
    <s:Button right="0" bottom="0" label="Talk!" click="talk()" />
</s:Application>

有人可以给我提示吗?

  1. 如何使工具提示随意出现? (而不仅仅是鼠标悬停)
  2. 如何更改颜色(我只找到了如何通过CSS设置一次)
  3. 更新

    我尝试了以下

            private var tip0:ToolTip;
            private var tip1:ToolTip;
            private var tip2:ToolTip;
    
            private function talk():void {
                var str:String = 'Me plays 10' + (++i % 2 ? '♥' : '♠');
                var btn:Button = this['user' + (i % 3)];
                var tip:ToolTip = this['tip' + (i % 3)];
                tip = ToolTipManager.createToolTip(str, btn.x + 10, btn.y + 10, "errorTipBelow", IUIComponent(btn)) as ToolTip;
            }
    

    但是效果不好 - 没有效果,没有消失(我想我必须自己调用destroyToolTip)。我想知道ToolTip是否可以(ab)用于我以优雅的方式表示“演讲气球”......

1 个答案:

答案 0 :(得分:1)

就个人而言,我发现工具提示系统相当有限,而且每当我想做一些不同的事情时,手动实现它似乎更容易。通常在这种情况下,我会将PopUpAnchor控件添加到需要这些叠加显示的组件中。然后,您可以完全手动控制显示的内容以及显示的内容。

http://blog.flexexamples.com/category/spark/popupanchor-spark/

有很多方法可以做到这一点,只是将工具提示组件构建为Group的子类,将其添加为子项,并跟踪它。

相关问题