Как добавить прослушиватель событий в прокручиваемый контент? - PullRequest
1 голос
/ 22 августа 2011

Я хочу поместить событие мыши в прокрутку текста в динамическом текстовом поле.

Например: я набираю несколько предложений в одно динамическое текстовое поле. Для каждого предложения я хочу иметь другое событие мыши. Как это:

sentenceA.addEventListener(MouseEvent.CLICK, functionA);

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

Как добавить список событий в каждое предложение прокручиваемого текста? Потому что позиция события мыши должна сдвигаться при относительной прокрутке текста.

Ответы [ 3 ]

0 голосов
/ 22 августа 2011
     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 на дисплее.

0 голосов
/ 22 августа 2011

Присмотритесь к flash.event.TextEvent.LINK , оно выдается при нажатии на HTML-текст, имеющий атрибут href = 'event: someText' Рассмотрим следующий пример

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.selectionBeginIndex и tf.selectionEndIndex) с границами предложений после щелчка.

0 голосов
/ 22 августа 2011

вот, пожалуйста ...

_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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...