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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.01.2006, 09:41
breez38 вне форума Посмотреть профиль Отправить личное сообщение для breez38 Найти все сообщения от breez38
  № 1  
Ответить с цитированием
breez38
 
Аватар для breez38

Регистрация: Nov 2005
Адрес: Иркутск
Сообщений: 233
Отправить сообщение для breez38 с помощью ICQ
По умолчанию Глюк с типами данных в Flash 8

в общем вот код:
Код:
var mXML:XML = new XML();
var t:Number = 0;

mXML.parseXML("<item Value=\"20\"/>");

trace(typeof(t)); 	//number
t = mXML.firstChild.attributes.Value; 
trace(typeof(t));	//string
Поясню. Переменная t объявлена как тип Numeric, но после присвоения ей значения аттрибута XML она меняет свой тип на String. Это черевато тем, что если нужно посчитать скажим t+2, то получим не 22, а 202!! Поскольку Флеш просто объеденит строки.

Конечно это лечится простым приведением типа:
Код:
t = Number(mXML.firstChild.attributes.Value);
Но как-то странно, что тип меняется самостоятельно .
С такой проблем столкнулся во Flash 8, в других версиях не тестил(лень ставить).
__________________
Никогда не может быть так плохо, чтоб не могло быть еще хуже!

Старый 13.01.2006, 10:48
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
да уж..
очередной пример иллюзорности типизации в AS2: компилятор не знает тип свойства и привет..
AS3/Flex кидает в этом месте TypeError: Error #1034: Type Coersion failed: cannot convert ..


Последний раз редактировалось silin; 13.01.2006 в 11:33.
Старый 13.01.2006, 11:03
breez38 вне форума Посмотреть профиль Отправить личное сообщение для breez38 Найти все сообщения от breez38
  № 3  
Ответить с цитированием
breez38
 
Аватар для breez38

Регистрация: Nov 2005
Адрес: Иркутск
Сообщений: 233
Отправить сообщение для breez38 с помощью ICQ
По умолчанию Глюк с типами данных в Flash 8

вот и я про то же..
__________________
Никогда не может быть так плохо, чтоб не могло быть еще хуже!

Старый 13.01.2006, 11:49
KPaul вне форума Посмотреть профиль Отправить личное сообщение для KPaul Найти все сообщения от KPaul
  № 4  
Ответить с цитированием
KPaul
 
Аватар для KPaul

Регистрация: Nov 2005
Сообщений: 221
Это же всем известный факт, что типы существуют только при компиляции, в основном для более удобной отладки.
Назначая тип Number, а затем присваивание в переменную значения с типом String автоматического приведения типов не произойдет, как не произойдет и ошибки компилятора, тк он не имеет представления кокого типа mXML.firstChild.attributes.Value.
Это совсем не глюк, а дело в том что AS1 и AS2 фактически языки стандарта ECMAScript (подразумевает свободную типизацию).

Старый 13.01.2006, 12:24
breez38 вне форума Посмотреть профиль Отправить личное сообщение для breez38 Найти все сообщения от breez38
  № 5  
Ответить с цитированием
breez38
 
Аватар для breez38

Регистрация: Nov 2005
Адрес: Иркутск
Сообщений: 233
Отправить сообщение для breez38 с помощью ICQ
По умолчанию Глюк с типами данных в Flash 8

to KPaul
Да я в курсе какого стандарта AS и про то, что AS1 пообще не типизированный. Но вот другой факт удивляет: в книгах по AS2 (даже от Macromedia Press, eng) почти в каждом разделе говорится про типизацию, про важность указывать типы, что компилятор проверяет и т.д. Видно не все проверяет .

Компил мог хотя варнинг бросить (для дебага проще). А то ищи, где у тебя глюк. Особенно это напрягает, когда у тебя иерархия классов, и свойтсво объявлено в родительском(в самом начале иерархии), а юзаешь класс дочерний(в конце иерархии). Вот и ищи, где гонит... особенно когда проект горит!

Радует, что AS3 отошел от "скриптовости".
__________________
Никогда не может быть так плохо, чтоб не могло быть еще хуже!

Старый 13.01.2006, 12:56
KPaul вне форума Посмотреть профиль Отправить личное сообщение для KPaul Найти все сообщения от KPaul
  № 6  
Ответить с цитированием
KPaul
 
Аватар для KPaul

Регистрация: Nov 2005
Сообщений: 221
Сделай сомостоятельную проверку:
Код:
class someClass {
        private var _value:Number;
	public function get value(){
		return _value;
	}
	public function set value(value){
		if(typeof(value)!="number"){
			trace("throw some exception");
		}else{
			this._value = value;
		}
	}
}

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

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
так ты сразу делай число а не строку

Number(expression) %))) и ниче ловить не нужно будет

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

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

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


 


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


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