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

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

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

Регистрация: May 2008
Адрес: Новокузнецк
Сообщений: 219
Записей в блоге: 1
По умолчанию Проблема с uint в for.

Нашел проблему, кто знает причину.
Код AS3:
 
private var _nColArr:uint = 1;
 
private function mSwap0(event:MouseEvent):void {
	for (var i:uint = _nColArr; i >= 0; i--) {
		trace("i  " + i);
		addChild(_aSortMc[i]);
	}
 
} 
 
трейс выдаёт
i  1
i  0
i  4294967295
TypeError: Error #2007: Параметр child не должен быть равен нулю.
	at flash.display::DisplayObjectContainer/addChild()
	at Sborka/mSwap0()
Установил int проблема исчезла

Код AS3:
 for (var i:int = _nColArr; i >= 0; i--) {
		trace("i  " + i);
		addChild(_aSortMc[i]);
	} 
трейс выдаёт
i  1
i  0
__________________
Книги и желание лучшие учителя.

Старый 04.05.2009, 19:31
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Сначала совершается операция изменения счетчика цикла, а потом сравнение с условием. Так как был использован uint, то двоичное представление числа -1 интерпретируется как очень большое положительное число.
__________________
4am is time to rock

Старый 04.05.2009, 19:33
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
uint - unsigned int, короче говоря - беззнаковое, которое в минус уйти не может.
Поэтому -1 для uint будет как максимально возможное число.
Это связано со строением компьютера, так сказать. Лень углубляться.)

Айайай, Dark меня опередил(

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

Регистрация: May 2008
Адрес: Новокузнецк
Сообщений: 219
Записей в блоге: 1
Спасибо, не знал что: Сначала совершается операция изменения счетчика цикла, а потом сравнение с условием.
__________________
Книги и желание лучшие учителя.

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

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Эм... а где это сначала меняется счетчик, а потом идет операция сравнения? (первая итерация i = 1, т.е. изначальное значение, сравнивает, трейсит, только потом i-- идет).

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

Регистрация: Nov 2008
Сообщений: 109
Цитата:
Сообщение от Hidest Посмотреть сообщение
Эм... а где это сначала меняется счетчик, а потом идет операция сравнения? (первая итерация i = 1, т.е. изначальное значение, сравнивает, трейсит, только потом i-- идет).
На последнем шаге...Чтобы цикл остановился, должно нарушиться условие i >= 0...

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
а цикл будет бесконечный))) Потому что i по определению uint просто не может быть отрицательным)
Если бы не ошибка внутри цикла то выхода бы из него не было)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 06.05.2009, 10:41
Smrad вне форума Посмотреть профиль Отправить личное сообщение для Smrad Найти все сообщения от Smrad
  № 8  
Ответить с цитированием
Smrad

Регистрация: Nov 2008
Сообщений: 205
Отправить сообщение для Smrad с помощью ICQ
Беззнаковые типы только для битовых операций. В логике не нужны вовсе.

Старый 06.05.2009, 11:17
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 9  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Smrad Посмотреть сообщение
Беззнаковые типы только для битовых операций.
Неужели?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.05.2009, 11:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Smrad Посмотреть сообщение
Беззнаковые типы только для битовых операций. В логике не нужны вовсе.
Обоснуйте. ©

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

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

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


 


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


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