Показать сообщение отдельно
Старый 19.08.2009, 13:00
bulya123 вне форума Посмотреть профиль Отправить личное сообщение для bulya123 Найти все сообщения от bulya123
  № 1  
Ответить с цитированием
bulya123
 
Аватар для bulya123

Регистрация: Aug 2008
Адрес: Moscow
Сообщений: 31
Attention Переменную типа Object привести к Number

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

Задача наладить связь между два флэшками через LocalConnection, одна выступает в роли отправителя данных, другая в роли получателя и обработчика.

У отправителя есть текстовое поле phone_txt и кнопка send_btn. Пользователь воодит номер телефона и жмет на кнопку отправить, функция validPhone проверяет верность введенных данных и при нажатии на кнопку отправляет переменную REQUEST во вторую флэшку.

ОТПРАВИТЕЛЬ:
Код AS1/AS2:
phone_txt.border = true;
phone_txt.borderColor = 0x000000;
var REQUEST:XML;
 
var login_out:LocalConnection = new LocalConnection();
 
 
function validPhone(phoneNumber:String):Boolean {
	if (phoneNumber.length == 10 && isNaN(phoneNumber) == false) {
		return true;
	} else {
		return false;
	}
 
}
send_btn.onRelease = function() {
	if (validPhone(phone_txt.text) == true) {
		var REQUEST:XML = new XML("<request type=\"login\"><phone>"+phone_txt.text+"</phone></request>");
		login_out.send("login","phone",REQUEST);
		trace("отправили");
	} else {
		trace("ошибка");
		error_txt.text = "Телефон должен содержать 10 цифр";
	}
};
REQUEST отправляется в виде XML файла так надо

Вся проблема в получателе. В получателе содержиться табличка USERS с номерами телефонов, пин-кодами и именами абонентов.

ПОЛУЧАТЕЛЬ

Код AS1/AS2:
var USERS:Array = new Array(
[9035231127, 7777, "Петр Петрович", "Шлагбаум"],
[9034234233, 2343, "ВАСИЛИЙ", "ДУРАК"],
[9544665656, "Роман", "Трахтенберг"]
);
 
var k:Number = 0;
var login_in:LocalConnection = new LocalConnection();
 
login_in.connect("login");
login_in["phone"] = function (REQUEST:XML):Void {
 
 
	for (i=0; i<USERS.length; i++) { 
 
		if (USERS[i][0] == REQUEST.firstChild.firstChild.firstChild) {
 
			if(!isNaN(USERS[i][1])) {k=1; trace("1")} else {k=2; trace("2")}
		} else {k=3; trace("3")}
	}
};
Ошибка возникает при проверке на равенство введенного телефона и телефона из таблицы:
Код AS1/AS2:
USERS[i][0] == REQUEST.firstChild.firstChild.firstChild
Типы переменных не совпадают USERS[i][0] типа Number, а REQUEST.firstChild.firstChild.firstChild типа Object.

Первый вопрос почему так получилось?
Второй как поправить?

В принципе все. Всем заранее большое спасибо за ответы, с меня