![]() |
Смотрим
Код:
// код 110 10 10 300 10 10 Почему так происходит: Сначала мы создаем глобальную переменую [1], при попытке вывести просто glob [2] флеш ищет по цепочке вверх и находит переменую в _global. Когда присваеваем новое значение [3], то мы на самом деле создаем новую переменную в таймлайне, поэтому при попытке вывести просто glob [4] флеш не идет вверх, так как находит имя переменной в таймлайне. Это легко проверить заглянув в дебаггер. Там найдете одну переменную в _global, а одну в _level0. Теперь удалим просто glob [5] и увидим что при его попытке вывести, флеш опять не находит его в таймлане и идет выше до _global. Почему Код:
// код 1Мы создаем глобальную переменную [1], а потом, по аналогии с тем что я писал выше, опять создаем новую переменную в таймлане [2], но varible++ это постфиксное инкременирование, то есть сначала мы используем переменную, а уж потом ее увеличиваем на 1. Поэтому _global.glob получает значение glob (которая еще пока береться из _global), а потом создается таймлайновый glob с увеличенным значением. Поэтому надо использовать префисное инкременирование ++varible. Тогда _global.glob и glob будут равны. Хотя зачем делать _global.glob=++glob тоже не ясно. Можно ведь сделать _global.glob++ :) |
iNils,
про цепочку области видимости переменной и постфиксное инкрементирование ты хорошо рассказал. Спасибо : ) Но удивительно другое. Код:
// измененный вариант первой строчки твоего кода про _global |
Код:
var x;Код:
var x; |
Все же просто
Код:
var x;Но это для 6-го флеша, версии выше в результате дадут NaN для y. |
iNils, выпить бы с тобой водки!
Инструкция постфиксного инкрементирования сперва возвращает значения операнда, а потом его инкрементирует. Я всегда знал как это работает, но это не помешало мне запутаться. Спасибо. Спасибо. :yahoo: Поведение седьмого и восьмого плееров мне не понятно. Но так как я (пока еще) не занимался AS2, это вполне последовательно. :) UPD: Подозреваю, что автоматическое приведение типов данных в седьмом Флэше работает иначе. |
по-ходу я понял всё же в чем дело!!!!
вместо Цитата:
Цитата:
Спасибо iNils! |
ничего ты не понял:)
разницы между: Код:
_global.glob = 5;Код:
_global.glob = 5;А здесь есть: Код:
_global.glob = 5;Код:
_global.glob = 5; |
:)
дело в том, что Цитата:
и "trace" постоянно выдавал исходное значение вот... |
| Часовой пояс GMT +4, время: 03:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.