Просмотр полной версии : Как добавить текст
Здравствуйте, уважаемые знатоки.
Есть задача:
Есть текстовое поле input, и в него грузится текст.
Как сделать, если я хочу выделить какой-нибудь
фрагмент текста, нажать кнопку и этот фрагмент текста
заключался в скобки.
пример:
...равными по модулю...
выделяю "по", нажимаю кнопку
...равными (по) модулю...
Спасибо. :moder:
На сцене кнопка braceButton и поле ввода input_txt
braceButton.onPress = braceIt;
function braceIt():Void
{
var str:String = input_txt.text;
//// начало и конец выделения
var selIn :Number = Selection.getBeginIndex();
var selEnd:Number = Selection.getEndIndex();
Selection.setSelection(0,0);
//// разрезаем строку на три куска
var s1:String = str.substring(0, selIn);
var s2:String = str.substring(selIn, selEnd);
var s3:String = str.substring(selEnd);
//// вставляем скобки
var bracedString:String = s1 + "(" + s2 + ")" + s3;
input_txt.text = bracedString;
}
Wolsh, у тебя этот код работает?
Конечно. Я всегда проверяю. У тебя - нет?))
Добавлено через 5 минут
Вообще то можно было выделение не снимать, а расширить чтобы включало новые скобки или сместить, чтобы остался выделенным тот же текст, теперь внутри скобок... ну это уже как автору захочется.
braceButton.onPress = braceIt;
function braceIt():Void
{
var str:String = input_txt.text;
//// начало и конец выделения
var selIn :Number = Selection.getBeginIndex();
var selEnd:Number = Selection.getEndIndex();
// XXX У меня фокус слетает, при нажатии на кнопку и получаются
// такие значения
trace(Selection.getFocus()); // null
trace(selIn + " " + selEnd); // -1 -1
...
}
Не пойму, в чем я туплю. Выложи исходник пожалуйста. (текст мышкой выделяю, перед нажатием на кнопку)
Оппа... сохранил под восьмой плеер - точно не работает, скобки в начало строки встают. В девятом же всё как часы...
Я в восьмерке тестировал, поэтому и не получалось. Понятно теперь. Вымучал такой безумный код =) :
// на сцене txt и mc
txt.onSetFocus = txt_onSetFocusHandler;
txt.onKillFocus = txt_onKillFocusHandler;
mc.onRelease = mc_onReleaseHandler;
var beginIndex:Number;
var endIndex:Number;
function txt_onSetFocusHandler(oldFocus:Object):Void
{
onMouseUp = onMouseUpHandler;
}
function txt_onKillFocusHandler(newFocus:Object):Void
{
delete onMouseUp;
}
function onMouseUpHandler():Void
{
beginIndex = Selection.getBeginIndex();
endIndex = Selection.getEndIndex();
}
function mc_onReleaseHandler():Void
{
if (beginIndex == endIndex)
return;
var newString:String = "[" + txt.text.substring(beginIndex, endIndex) + "]";
txt.replaceText(beginIndex, endIndex, newString);
delete beginIndex;
delete endIndex;
}
Похоже баг такой в восьмерке((
Вот подсократил код)))
braceButton.onPress = braceIt;
function braceIt():Void
{
var str:String = input_txt.text;
//// начало и конец выделения
var selIn :Number = Selection.getBeginIndex();
var selEnd:Number = Selection.getEndIndex();
//// вставляем скобки
var bracedString:String = "(" + str.substring(selIn, selEnd) + ")";
input_txt.replaceSel(bracedString)
}
Можно еще проверку добавить:
braceButton.onPress = braceIt;
function braceIt():Void
{
var str:String = input_txt.text;
//// начало и конец выделения
var selIn :Number = Selection.getBeginIndex();
var selEnd:Number = Selection.getEndIndex();
if (selIn == selEnd)
return;
//// вставляем скобки
var bracedString:String = "(" + str.substring(selIn, selEnd) + ")";
input_txt.replaceSel(bracedString)
}
Ну да))
А в твой код я внес косметические изменения, ибо в девятке результат его действия некрасив - выделение то остается, только теперь от первой скобки до предпоследней буквы редактируемого отрывка)))) Сделал чтобы выделение "покрывало" все от первой до последней скобки
function mc_onReleaseHandler():Void
{
if (beginIndex == endIndex)
return;
var newString:String = "[" + txt.text.substring(beginIndex, endIndex) + "]";
txt.replaceText(beginIndex, endIndex, newString);
Selection.setFocus(txt);
Selection.setSelection(beginIndex, endIndex+2);
delete beginIndex;
delete endIndex;
}
Ну в общем, ты молодец, нашел выход)))
Спасибо Вам
А, если во флешке, добавить еще одну кнопку для отправки текста(php).
измененный текст не отправляется.
(что-то типа фокус уходит, текст не сохраняется)
А, если, я сам напечатаю какой-нибудь текст в текстовом поле, уже после добавления скобок, тогда измененный текст(со скобками) отправляется.
Добавлено через 3 часа 19 минут
Почему, при переходе с одной кнопки(скобки) на другую(запись), скобки в текстовом поле (чтобы они сохранились нужно опять что-нибудь дописать в текстовом поле) не сохраняются?
Создан на основе Вашего кода, udaaff
// на сцене txt и mc
txt.onSetFocus = txt_onSetFocusHandler;
txt.onKillFocus = txt_onKillFocusHandler;
mc.onRelease = mc_onReleaseHandler;
var beginIndex:Number;
var endIndex:Number;
function txt_onSetFocusHandler(oldFocus:Object):Void
{
onMouseUp = onMouseUpHandler;
}
function txt_onKillFocusHandler(newFocus:Object):Void
{
delete onMouseUp;
}
function onMouseUpHandler():Void
{
beginIndex = Selection.getBeginIndex();
endIndex = Selection.getEndIndex();
}
function mc_onReleaseHandler():Void
{
if (beginIndex == endIndex)
return;
var newString:String = "[" + txt.text.substring(beginIndex, endIndex) + "]";
txt.replaceText(beginIndex, endIndex, newString);
delete beginIndex;
delete endIndex;
}
Почему(как реализовать), при переходе с одной кнопки(скобки) на другую(запись), скобки в текстовом поле (чтобы они сохранились, нужно опять что-нибудь дописать в текстовом поле) не сохраняются? (что-то типа фокус уходит, текст не сохраняется)
getelse, пример -- в смысле, исходник с примером, а не swf файл.
вот, лови flash8, as2
zip (fla,swf,php)
target (http://narod.ru/disk/1155679000/tarfet.zip.html)
Вот хороший пример по теме из FAQ http://www.flasher.ru/forum/showthread.php?t=65889
Объясните друзья.
Как сохранить текст, 'после изменения давшей одной кнопкой', другой кнопкой.
В процессе перехода с одной кнопки на др. кнопку, изменения в тексте (которые дала
первая кнопка) не сохраняются, второй кнопкой.
Спасибо.
codfelix
03.08.2009, 23:02
Selection.setFocus("txt");
Что-то, так не получается
Selection.setFocus("txt");
Объясните друзья.
Как сохранить текст, 'после изменения давшей одной кнопкой', другой кнопкой.
В процессе перехода с одной кнопки на др. кнопку, изменения в тексте (которые дала
первая кнопка) не сохраняются, второй кнопкой.
Спасибо.
Так ты серьезно, или прикалываешься?
Из чего видно, что одна кнопка меняет текст, а "в процессе перехода с одной кнопки на др. кнопку, изменения в тексте (которые дала первая кнопка) не сохраняются"? Попробуй не сохранять, просто выводить текст при нажатии "другой" кнопки с помощью trace(). Если текст выводится измененным, то приведи код сохранения, иначе код изменения.
Код кнопки сохранения
on(release) {
loadVariables("target.php", "_root", "POST");
}
target.php
<?php
$f = fopen("result.html", "w");
fwrite($f, 'myText='. stripslashes ($myText));
fclose($f);
?>
Код кнопки изменения (заключение фрагмента текста в скобки)
txt.onSetFocus = txt_onSetFocusHandler;
txt.onKillFocus = txt_onKillFocusHandler;
mc.onRelease = mc_onReleaseHandler;
var beginIndex:Number;
var endIndex:Number;
function txt_onSetFocusHandler(oldFocus:Object):Void
{
onMouseUp = onMouseUpHandler;
}
function txt_onKillFocusHandler(newFocus:Object):Void
{
delete onMouseUp;
}
function onMouseUpHandler():Void
{
beginIndex = Selection.getBeginIndex();
endIndex = Selection.getEndIndex();
}
function mc_onReleaseHandler():Void
{
if (beginIndex == endIndex)
return;
var newString:String = '(' + txt.text.substring(beginIndex, endIndex) + ')';
txt.replaceText(beginIndex, endIndex, newString);
delete beginIndex;
delete endIndex;
}
В процессе перехода с одной кнопки на др. кнопку, изменения в тексте (которые дала
первая кнопка) не сохраняются, второй кнопкой.?
Смотри как все просто:
Код кнопки сохранения
on(release) {
php_send = new LoadVars();
php_send.txt = txt.text;
php_send.sendAndLoad("http://site/target.php", php_send, "POST");
}
target.php
<?php
$myText = $_POST['txt'];
$f = fopen("result.html", "w");
fwrite($f, 'myText='.$myText);
fclose($f);
?>
А не та лабуда, которую ты взял с первой попавшейся ссылки "передача данных из Flash в PHP")))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.