2011-09-07 74 views
2

我从单纯的Flash/AS3移植纸牌游戏到Flex 4.5:显示黑色和红色的工具提示语音baloons

game

我差不多完成了,但“讲话baloons”打上了上面屏幕截图中的蓝色缺失。

那些“语音气球”会淡入,显示红色(如果它们包含心脏或钻石字符)或黑色文本,并最终淡出。

我试图执行这些为mx.controls.ToolTip S和已经准备了一个简单的测试情况下,如果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设置一次吧)

UPDATE:

我已经试过以下

 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

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

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

有不少方法可以做到这虽然以及刚刚建立的工具提示组件作为集团的一个子类,添加它作为一个孩子,并保持它的轨道。