代码之家  ›  专栏  ›  技术社区  ›  Patrick Gates

在AS3中设置选择

  •  1
  • Patrick Gates  · 技术社区  · 14 年前

    send.addEventListener(MouseEvent.CLICK, function() {
        panel.tweet.selectable = true;
        stage.focus = panel.tweet;
        panel.tweet.setSelection(0, panel.tweet.text.length);
    });
    
    5 回复  |  直到 14 年前
        1
  •  2
  •   Glycerine    14 年前

    疯狂-应该很好。

    我做了一个小演示让你看到它的工作:

    http://strangemother.com/actionscript/demos/select_text_click_demo/

    import flash.events.MouseEvent;
    
    send.addEventListener(MouseEvent.CLICK, sendMouseClickEventHandler);
    
    function sendMouseClickEventHandler(ev:MouseEvent):void
    {
        stage.focus = tweet;
        tweet.selectable = true;
        tweet.setSelection(0, tweet.text.length ); 
    
    }
    
        2
  •  1
  •   stealthyninja michkra    12 年前

    有一个更好的解决方案: 使用callLater;问题是鼠标事件。如果您稍后尝试执行选择,它将起作用。

        3
  •  0
  •   Andir    14 年前

    试着这样做:(我现在没有Flash测试…)

    send.addEventListener(MouseEvent.CLICK, function() {
        panel.tweet.selectable = true;
        panel.tweet.stage.focus = panel.tweet;
        panel.tweet.setSelection(0, panel.tweet.text.length);
    });
    

    如果不是这样的话,那么可能是mouseup事件造成了重击

        4
  •  0
  •   Juan Pablo Califano    14 年前

    我想你的代码应该有用。

    是否调用了事件侦听器?

    一种快速而肮脏的方法来检查问题是否出在这里:

    send.stage.addChild(send);
    

    mouseEnabled 属性到 false . mouseChildren 如果所说的movieclips反过来包含其他阻塞对象(当然,这些对象不需要对鼠标事件做出反应),也会有所帮助。

        5
  •  0
  •   Peter Oram Todd F.    12 年前

    问题在于焦点。

    只需这样做(引入10毫秒的延迟)

    var timer1:Timer = new Timer(10,1);
    timer1.addEventListener(TimerEvent.TIMER, delayedSelection);
    timer1.start();
    
    function delayedSelection(e:TimerEvent):void
    {
        stage.focus = tweet;
        tweet.selectable = true;
        tweet.setSelection(0, tweet.text.length ); 
    }