Уля, жесть. Пытаешься попасть пальцем в небо, перемешивая фрагменты недокода в рандомном порядке)) но так не получится)) Почитай книжечки. Пожалуйста.
И, божечки, неужели так сложно оформить код в сообщении в теги ??
Ладно, попробуем снова и по порядку.
Разберем твою задачу, озвученную в теме.
Дано:
Цитата:
У меня 3 текстовых поля t1, t2, t3. При клике на каждое из них загорается циферка. если на сцене нет цифер (все поля пустые) - тогда на поле, на котором щелкнули, загорается единичка. если единичка уже занята, на след. поле загорается двойка и т.д. Если щелкнуть по цифре, то она исчезает
|
Что мы имеем:
- Текстовые поля t1, t2 и t3.
- переменную X (та самая "циферка"), которая по умолчанию равна 0.
- при клике на одно из текстовых полей происходит следующее:
1. если поле пустое, то вписываем в него X+1.
2. если поле не пустое, то оно становится пустым. Также, если его значение было = X, то делаем X-1
Вроде как все, исходя из тобой написанного.
Ок. Создаем переменную, а которой будем хранить "циферку". Она у нас целое.
Код AS3:
var X:int = 0;
далее, слушаем клики по текстовым полям в одной функции
Код AS3:
t1.addEventListener(MouseEvent.CLICK, textFieldHandler);
t2.addEventListener(MouseEvent.CLICK, textFieldHandler);
t3.addEventListener(MouseEvent.CLICK, textFieldHandler);
после чего пишем непосредственно саму функцию слушателя
Код AS3:
function textFieldHandler(event:MouseEvent):void
{
//достанем из события event target - поле, на которое целкнули
//и положим его в отдельную переменную, чтобы было удобней работать и читабельней
var tf:TextField = event.target as TextField;
//если текстовое поле, покоторому кликнули пустое, то
if(tf.text == '')
{
//выражение ++ перед переменной сначала прибавляет 1 к X, а потом созвращает его значение
//то есть, если X был = 0, то программа сначала прибавит к нему 1, после чего
//вернет уже результат сложения. Таким образом, если Х был равен 0, то в текстфилд
//по которому мы кликнули, запишется 1. И Х уже будет равен 1, так что в следующий раз,
//когда мы кликнем по другому текстовому полю, произойдет все тоже самое, но уже с Х равняющимся 1,
//и во второе поле запишется уже 2.
tf.text = ++X;
} else //если поле не пустое, то есть "если кликнули по циферке"
{
//сотрим: если значение поля равно Х, то есть самое большое число из имеющихся, то авчитаем из Х 1.
//кстати, выражение -- после переменно сначала возвращает её значение, а уже потом изменяет её на -1.
//так что, важно помнить разницу между ++X и X++
if(tf.text == String(X)) X--;
//ну и все, присваиваем этому полю пустую строку
tf.text = '';
}
}
Итого, если убрать комменты, весь код будет выглядеть так
Код AS3:
import flash.text.TextField;
import flash.events.MouseEvent;
var X:int = 0;
t1.addEventListener(MouseEvent.CLICK, textFieldHandler);
t2.addEventListener(MouseEvent.CLICK, textFieldHandler);
t3.addEventListener(MouseEvent.CLICK, textFieldHandler);
function textFieldHandler(event:MouseEvent):void
{
var tf:TextField = event.target as TextField;
if(tf.text == '')
{
tf.text = ++X;
} else
{
if(tf.text == String(X)) X--;
tf.text = '';
}
}