Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.12.2018, 14:29
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 11  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Сообщение от deepNoise Посмотреть сообщение
Я хотел не с одного поля в другое, а просто одно поле, в которое напечатать текст вручную в исходнике, и он появится с эффектом печати при запуске мувика)
После компиляции это будет стринговая константа - те же яйца, только в профиль, то есть первый вариант с массивом.
Может надо (я вангую) вопрос и на него печатать ответ, то это надо организовать два массива: один с вопросами, другой с ответами. По одному индексу выбирать вопрос/ответ. Где-то так. Но это вам решать.

Старый 30.12.2018, 06:39
deepNoise вне форума Посмотреть профиль Отправить личное сообщение для deepNoise Найти все сообщения от deepNoise
  № 12  
Ответить с цитированием
deepNoise

Регистрация: May 2018
Сообщений: 27
Подскажите как сделать, чтобы текст из поля печатался со всеми переносами строк? А то сейчас он печатается в одну строку без переносов.

Код AS3:
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();
    }
}
Вложения
Тип файла: rar textQuestV1.rar (6.8 Кб, 25 просмотров)

Старый 30.12.2018, 19:22
Swer вне форума Посмотреть профиль Отправить личное сообщение для Swer Найти все сообщения от Swer
  № 13  
Ответить с цитированием
Swer
 
Аватар для Swer

Регистрация: Feb 2014
Сообщений: 33
Код AS3:
//answer_tf.width  = 500; 
//answer_tf.height = 500;  
answer_tf.wordWrap = true; // перенос по словам - если нужно
answer_tf.multiline  = true;
Еще можно знак "\n" в тексте ставить.
Код AS3:
answer_tf.appendText( "Hellow \n world" );

Старый 30.12.2018, 23:24
deepNoise вне форума Посмотреть профиль Отправить личное сообщение для deepNoise Найти все сообщения от deepNoise
  № 14  
Ответить с цитированием
deepNoise

Регистрация: May 2018
Сообщений: 27
Код AS3:
answer_tf.wordWrap = true; // перенос по словам - если нужно
answer_tf.multiline  = true;
А куда именно это нужно поставить?
Пробовал после answer_tf.appendText(myArray.shift()); ставить и в функцию нажатия клавиши, но почему то текст продолжает печататься без переносов.
А способ с \n наверно подходит только, если текст берётся из скрипта, а не из текстового поля.

Старый 31.12.2018, 09:08
Swer вне форума Посмотреть профиль Отправить личное сообщение для Swer Найти все сообщения от Swer
  № 15  
Ответить с цитированием
Swer
 
Аватар для Swer

Регистрация: Feb 2014
Сообщений: 33
Можно попробовать так :
- кликаешь на нужное текстовое окно
- справа сверху есть ярлыки properties и library - выбираешь properties
- ищешь paragraph там есть поле behavior - устанавливаешь multiline.
У меня работает.

Мне кажется сначала надо продумать структуру, я не читал но может быть тебе поможет -
http://www.flasher.ru/forum/blog.php?b=691

Наверное переменная myArray лишняя.
Код AS3:
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.
Старый 31.12.2018, 15:04
deepNoise вне форума Посмотреть профиль Отправить личное сообщение для deepNoise Найти все сообщения от deepNoise
  № 16  
Ответить с цитированием
deepNoise

Регистрация: May 2018
Сообщений: 27
Цитата:
Мне кажется сначала надо продумать структуру, я не читал но может быть тебе поможет -
http://www.flasher.ru/forum/blog.php?b=691
Я в AS 3.0 то почти не разбираюсь, а тут ещё какое то XML. Почитал, не понял что такое id в каждой строке и lock="false".
Да и варианты ответа у меня нужно выбирать именно нажатием клавиши, а не мышью, а то бы я просто много кнопок наделал да и всё)
Думаю попробую сделать через переменные и if.

Старый 31.12.2018, 21:49
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 17  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Сообщение от deepNoise Посмотреть сообщение
А куда именно это нужно поставить?
Никуда ничего не надо вставлять. Просто надо "отловить" символ переноса строки 13 и вместо него подсунуть стринг "\n". Вот весь код первого кадра:
Код AS3:
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();
    }
}
Обрати внимание на новую переменную first_symbol. Это и есть очередной допечатываемый символ. Вот его и анализирует
Код AS3:
if (first_symbol.charCodeAt() == 13){
...

Старый 01.01.2019, 19:35
Swer вне форума Посмотреть профиль Отправить личное сообщение для Swer Найти все сообщения от Swer
  № 18  
Ответить с цитированием
Swer
 
Аватар для Swer

Регистрация: Feb 2014
Сообщений: 33
Цитата:
Сообщение от Жень Шень Посмотреть сообщение
Просто надо "отловить" символ переноса строки
Если символ переноса есть в тексте, то почему он не применяется ?

Старый 02.01.2019, 01:13
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 19  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Символ "Возврат каретки" имеет ASCII код 13.
Метод appendText(newText:String) добавляет строку, указанную параметром newText, в конец текста в текстовом поле. То есть по сути ничего не добавит в случае с символом ASCII 13. Надо сделать ещё "Перевод каретки" - ASCII код 10.
А этот код:

Код AS3:
answer_tf.appendText("\n");
можно заменить таким кодом:
Код AS3:
answer_tf.appendText(String.fromCharCode(10));
Всё бы прекрасно работало без всех этих премудростей (я про метод appendText и "ловлю" переноса строки, если был бы такой код:
Код AS3:
answer_tf.text = answer_tf.text + first_symbol;
Здесь добавляется не преобразованный в пустой стринг символ "Возврат каретки", а именно перенос строки.

Старый 02.01.2019, 09:45
Swer вне форума Посмотреть профиль Отправить личное сообщение для Swer Найти все сообщения от Swer
  № 20  
Ответить с цитированием
Swer
 
Аватар для Swer

Регистрация: Feb 2014
Сообщений: 33
Но если передать всю строку, то перенос строки будет применяться
Код AS3:
answer_tf.text = "";
answer_tf.appendText( myString );
Наверное проблема именно в посимвольной передачи.

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:41.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.