PDA

Просмотр полной версии : Selection... Begin.. End..


Mr. Fixit
06.11.2007, 03:24
var mL:Object = Object();
mL.onMouseMove = function () {
beginIndex = Selection.getBeginIndex ();
endIndex = Selection.getEndIndex ();

trace(beginIndex);
trace(endIndex);
trace('----------------------\n');

updateAfterEvent ();
}
}
Mouse.addListener(mL);
собственно проблема вот в чем.. мы заносим каретку выделения за крайний символ наполовину, и он отображается выделеным, но класс Selection не понимает и передает неправильное значение переменной, что дает некоторые трудности.
Сверил с этим "редактором текста", тут наполовину выделяя - всеравно записывается в переменную значение..
Прошу помочь в обнаружении ошибки, и решении задачи.. ;)

kruasan
06.11.2007, 04:59
Причина в том, что сначала срабатывает onMouseMove, лишь затем Selection обновляет значения индексов. Т.е. узнавать индексы надо с некоторой задержкой. Давай попробуем определять индексы не сразу, а через 0 миллисекунд :-) (почувствуйте разницу)

var mL:Object = Object();
function traceIndexes()
{
clearInterval(mL.intervalId);

beginIndex = Selection.getBeginIndex ();
endIndex = Selection.getEndIndex ();

trace(beginIndex);
trace(endIndex);
trace('----------------------\n');

updateAfterEvent();
}

mL.onMouseMove = function ()
{
this.intervalId = setInterval(traceIndexes,0)
}
Mouse.addListener(mL);

Теперь индексы отображаются правильно.

Кстати, в твоем коде одна лишняя фигурная скобка

Mr. Fixit
06.11.2007, 10:52
спс конечно.. решить можно заменив onMouseMove на onEnterFrame