![]() |
|
||||||||||
|
|||||
|
Нашел проблему, кто знает причину.
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()
__________________
Книги и желание лучшие учителя. |
|
|||||
|
ветеран форума
|
Сначала совершается операция изменения счетчика цикла, а потом сравнение с условием. Так как был использован uint, то двоичное представление числа -1 интерпретируется как очень большое положительное число.
__________________
4am is time to rock |
|
|||||
|
uint - unsigned int, короче говоря - беззнаковое, которое в минус уйти не может.
Поэтому -1 для uint будет как максимально возможное число. Это связано со строением компьютера, так сказать. Лень углубляться.) Айайай, Dark меня опередил(
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Эм... а где это сначала меняется счетчик, а потом идет операция сравнения? (первая итерация i = 1, т.е. изначальное значение, сравнивает, трейсит, только потом i-- идет).
|
|
|||||
|
Регистрация: Nov 2008
Сообщений: 109
|
На последнем шаге...Чтобы цикл остановился, должно нарушиться условие i >= 0...
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
а цикл будет бесконечный))) Потому что i по определению uint просто не может быть отрицательным)
Если бы не ошибка внутри цикла то выхода бы из него не было)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Беззнаковые типы только для битовых операций. В логике не нужны вовсе.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Обоснуйте. ©
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|