如何为滚动内容添加事件监听器?

时间:2011-08-22 01:01:53

标签: actionscript-3 actionscript

我想在动态文本字段中滚动一些鼠标事件。

例如:我在一个动态文本字段中键入几个句子。对于每个句子,我想要一个不同的鼠标事件。像这样:

sentenceA.addEventListener(MouseEvent.CLICK, functionA);

function functionA(evt:MouseEvent):void
{
trace("bla");
}

如何在滚动文本中为每个句子添加eventlistener?因为当相对文本滚动时,鼠标事件的位置应该移动。

3 个答案:

答案 0 :(得分:0)

你去......

_txt.htmlText = "<a href='event:sentence1'>This is one sentenc.</a> <a href='event:sentence2'>This is another sentence.</a>"
_txt.addEventListener(TextEvent.LINK, clickCopyHandler);

function clickCopyHandler(e:TextEvent):void {
    trace(e.text);
}

答案 1 :(得分:0)

     var sentences:Array = [ sentenceA, sentenceB, ...... ];

     function clickAllText(e:MouseEvent):void 
     {
        var index:int;
        for each(var s:String in sentences) 
        {
            index = dynamicTextField.text.indexOf(s);
            if(index >= 0 && index <= 3) 
            {
              //if the sentence is in the front 
              this["sentence"+sentences.indexOf(s)]();
              break;                                                                                                                        
            }
        }
     }

     function sentence0():void 
     {
     }

     function sentence1():void 
     {
     }

如果不是这种情况,则需要使用不同的文本字段,或者          得到鼠标点附近的句子x和y位置          显示。

答案 2 :(得分:0)

仔细看看flash.event.TextEvent.LINK,点击具有属性href ='event:someText'的html文本时会抛出它。请考虑以下示例

var tf:TextField = new TextField();
tf.htmlText = "<a href='event:first'>sentence1.</a><a href='event:second'>sentence2.</a>";
tf.addEventListener("link", clickHandler); //link is value of flash.event.TextEvent.LINK

function clickHandler(e:TextEvent):void {
    //here should be something like the following
    if (e.text == "first") sentence1();
    else if (e.text == "second") sentence2();
}
好吧,我猜你抓住了这个想法!问题是句子要放入标签,但你可以使链接看起来像普通文本。如果该变体不符合您的需求,您可以尝试将选择边界(tf.selectionBeginIndextf.selectionEndIndex)与点击后的句子边界进行比较。