PDA

Просмотр полной версии : Запись в массив изменений в TextField


Parsley
28.02.2012, 14:23
Как реализовать? Переменная одна передается из JS в виде строки (работает),
содержание строки меняется, отправляет в TextField (обычное текстовое поле в Flash). Надо отслеживать эти изменения и записывать в массив (история) или строчкой, то что менялось в TextField-e.
Например.
В текстовом поле появляются,
строки:

сначало
1. set:red

потом
2. set:yellow

далее
3. set:green
и т.д.

Надо чтобы все события отслеживались и записывались в какую-нибудь переменную (одной строкой т.е. так: set:red, set:yellow, set:green ) или в массив.

:o

Inet_PC
28.02.2012, 14:43
Ну а в чем проблема от? В момент
Переменная одна передается из JS в виде строки (работает), передачи строки, смотрите, если уже, что-то есть, то добавляете в конец массива текущее значение, а новое значение ставите на место текущего.

Srednas
28.02.2012, 14:58
Надо чтобы все события отслеживались и записывались в какую-нибудь переменную (одной строкой т.е. так: set:red, set:yellow, set:green ) или в массив.

:o

Как вариант:

var all:Vector.<String> = new Vector.<String>;
...
// реакция на изменения, пришедшие из JS:
var s:string = "текст вашего изменения";
myTextField.text = s;
all.push(s); // добавляем изменение в массив всех изменений

// теперь все изменения лежат в векторе (0 — первое, (all.lenght -1) — последнее)

tsarapkabel
28.02.2012, 14:59
myTextField.addEventListener(Event.CHANGE, text_change);
...
private function text_change(event:Event):void {
textArray.push(myTextField.text);
}

Parsley
28.02.2012, 15:18
А как теперь их всех вывести в какое нибудь текстовое поле в flash и записать строчкой в одну переменную?:
// теперь все изменения лежат в векторе (0 — первое, (all.lenght -1) — последнее)

Inet_PC
28.02.2012, 15:22
tf.text = all.join(',');

Parsley
28.02.2012, 15:34
Добавлено через 15 минут
var all:Vector.<String> = new Vector.<String>;
//реакция на изменения, пришедшие из JS:
var n:String = test1; // где test1 -- переменная из JS
myTextField.text = n;
all.push(n); // добавляем изменение в массив всех изменений
tf.text = all.join(',');

создаю текстовое поле с названием tf, но выводит только последнее значение test1
Что делать?

MikroAcse
28.02.2012, 16:49
Потому что надо подписываться на Event.CHANGE

Parsley
28.02.2012, 16:52
А подробнее, не понял... Надо всего ничего их от туда достать, если они там есть. = )

MikroAcse
28.02.2012, 16:58
var all:Vector.<String> = new Vector.<String>;
var n:String = test1;
myTextField.text = n;
myTextField.addEventListener(Event.CHANGE,changed);

function changed(e:Event):void {
all.push(myTextField.text);
tf.text = all.join(',');
}
По-моему, так :)

Parsley
28.02.2012, 17:15
где-то что-то не так (ничего не выводит)...
в test1 сначало вписывается set:red потом set:yellow потом set:green и т.д.,
надо это поймать и выдать допустим переменной... все вместе: set:red, set:yellow, set:green... (в зависимости от последовательности нажатия)

MikroAcse
29.02.2012, 11:22
Так тебе надо на изменение test1?
Я подумаю...

Parsley
29.02.2012, 16:05
Да, переменная одна, а данные она разные передает.

MikroAcse
29.02.2012, 16:08
test1 ты откуда берешь?
Это String?

Parsley
29.02.2012, 16:25
Да. String.
function getTextFromJavaScript(str:String):void {
receive.text = "" + str;
var test1:String=receive.text;