|
|
|||||
Цитата:
Может надо (я вангую) вопрос и на него печатать ответ, то это надо организовать два массива: один с вопросами, другой с ответами. По одному индексу выбирать вопрос/ответ. Где-то так. Но это вам решать. |
|
|||||
Регистрация: May 2018
Сообщений: 27
|
Подскажите как сделать, чтобы текст из поля печатался со всеми переносами строк? А то сейчас он печатается в одну строку без переносов.
stop(); var myString:String; var myArray=[]; var delay:int = 100; var timer1:Timer = new Timer(delay); stage.addEventListener(KeyboardEvent.KEY_DOWN, on_keyDown); timer1.addEventListener("timer", frameLooper); timer1.start(); function frameLooper(event:TimerEvent):void { if (myArray.length>0) { answer_tf.appendText(myArray.shift()); } else { timer1.stop(); } } function on_keyDown(e:KeyboardEvent):void { timer1.stop(); if (e.keyCode==49) {//1 delay=20; //скорость печати dialogs.gotoAndStop(1); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 50) {//2 delay=20; //скорость печати dialogs.gotoAndStop(2); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 51) {//3 delay=20; //скорость печати dialogs.gotoAndStop(3); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 52) {//4 delay=20; //скорость печати dialogs.gotoAndStop(4); answer_tf.text=""; myString=dialogs.tf.text; } if (e.keyCode==49||e.keyCode==50||e.keyCode==51||e.keyCode==52) { myArray=myString.split(""); timer1.delay = delay; timer1.start(); } } |
|
|||||
Регистрация: Feb 2014
Сообщений: 33
|
//answer_tf.width = 500; //answer_tf.height = 500; answer_tf.wordWrap = true; // перенос по словам - если нужно answer_tf.multiline = true; |
|
|||||
Регистрация: May 2018
Сообщений: 27
|
А куда именно это нужно поставить?
Пробовал после answer_tf.appendText(myArray.shift()); ставить и в функцию нажатия клавиши, но почему то текст продолжает печататься без переносов. А способ с \n наверно подходит только, если текст берётся из скрипта, а не из текстового поля. |
|
|||||
Регистрация: Feb 2014
Сообщений: 33
|
Можно попробовать так :
- кликаешь на нужное текстовое окно - справа сверху есть ярлыки properties и library - выбираешь properties - ищешь paragraph там есть поле behavior - устанавливаешь multiline. У меня работает. Мне кажется сначала надо продумать структуру, я не читал но может быть тебе поможет - http://www.flasher.ru/forum/blog.php?b=691 Наверное переменная myArray лишняя. stop(); var myString:String = ""; var delay:int = 100; var timer1:Timer = new Timer(delay); var nextCharIndex:int = 0; var lengthString:int = 0; stage.addEventListener(KeyboardEvent.KEY_DOWN, on_keyDown); timer1.addEventListener("timer", frameLooper); timer1.start(); function frameLooper(event:TimerEvent):void { if ( nextCharIndex < lengthString ) { answer_tf.appendText( myString.charAt( nextCharIndex ) ); ++nextCharIndex; } else { timer1.stop(); } } function on_keyDown(e:KeyboardEvent):void { timer1.stop(); if (e.keyCode==49) {//1 delay=20; //скорость печати dialogs.gotoAndStop(1); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 50) {//2 delay=20; //скорость печати dialogs.gotoAndStop(2); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 51) {//3 delay=20; //скорость печати dialogs.gotoAndStop(3); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 52) {//4 delay=20; //скорость печати dialogs.gotoAndStop(4); answer_tf.text=""; myString=dialogs.tf.text; } if (e.keyCode==49||e.keyCode==50||e.keyCode==51||e.keyCode==52) { nextCharIndex = 0; lengthString = myString.length; timer1.delay = delay; timer1.start(); } } Последний раз редактировалось Swer; 31.12.2018 в 09:26. |
|
|||||
Регистрация: May 2018
Сообщений: 27
|
Цитата:
Да и варианты ответа у меня нужно выбирать именно нажатием клавиши, а не мышью, а то бы я просто много кнопок наделал да и всё) Думаю попробую сделать через переменные и if. |
|
|||||
Никуда ничего не надо вставлять. Просто надо "отловить" символ переноса строки 13 и вместо него подсунуть стринг "\n". Вот весь код первого кадра:
stop(); var myString:String; var myArray=[]; var delay:int=100; var timer1:Timer=new Timer(delay); var first_symbol:String; stage.addEventListener(KeyboardEvent.KEY_DOWN, on_keyDown); timer1.addEventListener("timer", frameLooper); timer1.start(); function frameLooper(event:TimerEvent):void { if (myArray.length>0) { first_symbol=myArray.shift(); //trace(first_symbol, first_symbol.charCodeAt()); if (first_symbol.charCodeAt() == 13){ answer_tf.appendText("\n"); } else { answer_tf.appendText(first_symbol); } } else { timer1.stop(); } } function on_keyDown(e:KeyboardEvent):void { timer1.stop(); if (e.keyCode==49) {//1 delay=20;//скорость печати dialogs.gotoAndStop(1); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 50) {//2 delay=20;//скорость печати dialogs.gotoAndStop(2); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 51) {//3 delay=20;//скорость печати dialogs.gotoAndStop(3); answer_tf.text=""; myString=dialogs.tf.text; } else if (e.keyCode == 52) {//4 delay=20;//скорость печати dialogs.gotoAndStop(4); answer_tf.text=""; myString=dialogs.tf.text; } if (e.keyCode==49||e.keyCode==50||e.keyCode==51||e.keyCode==52) { myArray=myString.split(""); timer1.delay=delay; timer1.start(); } } |
|
|||||
Регистрация: Feb 2014
Сообщений: 33
|
Если символ переноса есть в тексте, то почему он не применяется ?
|
|
|||||
Символ "Возврат каретки" имеет ASCII код 13.
Метод appendText(newText:String) добавляет строку, указанную параметром newText, в конец текста в текстовом поле. То есть по сути ничего не добавит в случае с символом ASCII 13. Надо сделать ещё "Перевод каретки" - ASCII код 10. А этот код: можно заменить таким кодом: Всё бы прекрасно работало без всех этих премудростей (я про метод appendText и "ловлю" переноса строки, если был бы такой код: Здесь добавляется не преобразованный в пустой стринг символ "Возврат каретки", а именно перенос строки. |
|
|||||
Регистрация: Feb 2014
Сообщений: 33
|
Но если передать всю строку, то перенос строки будет применяться
Наверное проблема именно в посимвольной передачи. |
Часовой пояс GMT +4, время: 12:41. |
|
« Предыдущая тема | Следующая тема » |
|
|