![]() |
|
||||||||||
|
|||||
|
Две нижеприведенные строчки казалось бы выполняют одно и тоже. По крайней мере мне так какзлось до определенного момента. Хотелось бы услышать про отличия в их работе, когда какой из вариантов следует использовать. У меня почему-то в некоторых случаях работает только 1й вариант (могу привести конкретные примеры, но хотелось бы понять суть их работы, поэтому я пока послушаю теорию, и если не осилю - буду упрощать свою задачу и предлагать конкретный код)
Заранее спасибо.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
Ну насколько известно первая строчка инициализирует метод-событие текущей временной шкалы, но не присваивает ему конкретной инстанции.
Вторая строчка предназначена для полного удаления метода-события. Вообще то эти две строчки совсем разные.
__________________
Случайность, господа, это знаете ли непознанная необходимость. |
|
|||||
|
Т.е. в 1с варианте сама функция onEnterFrame не исчезает? Т.е функция продолжает работать, возвращая "ничего"? Тогда есть ли смысл в такой конструкции?
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
В такой конструкции вообщем-то смысла нет, а вот в прединициализации свойств есть. Вот например в классе для присваивания свойству не динамического класса, необходимо предварительно инициализировать свойство, т.е.
class MyClass
{
private var myProp:Number = null;
function MyClass(myProp:Number)
{
this.myProp = myProp;//конструктор класса
}
}
Так вот если не выполнить прединициализацию свойства myProp компилятор выдаст ошибку. А вообще-то null означает "пустое" значение. Оно нужно если мы нехотим передавать никакое значение значение параметра в функцию. Или, допустим в какой-то момент мы незнаем значение переменной, но в данном конкретном месте ее прединициализация целесообразна из соображений контроля типов, ну и тд. Однозначно пользуйтесь delete Последний раз редактировалось Alex_beginner; 03.06.2008 в 10:54. |
|
|||||
|
Alex_beginner, инициализации при объявлении вовсе необязательна, достаточно и var myProp:Number;
кстати, поправь свой пример, объявить свойство класса как this.myProp:Number = null; никак не выйдет ps: onEnterFrame не нуждается ни в инициализации, ни даже в объявлении поскольку речь все же о наследниках MovieClip, т.е. такой класс, например, не вызовет ошибки: |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Несколько раз обсуждалось это. Использовать нужно delete.
|
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
silin! Красивый реверанс)). Вы не забывайте Вы создали подкласс от MovieClip, в нем инициализирован этот метод(onEnterFrame). А здесь Вы его просто переопределяете. Пожалуйста, мою мысль некаверкайте и людей с толку несбивайте.
__________________
Случайность, господа, это знаете ли непознанная необходимость. Последний раз редактировалось Alex_beginner; 03.06.2008 в 10:19. |
|
|||||
|
Цитата:
-инициализация при объявлении не нужна, а в некоторых случаях и вредна (инициализация непримитивных типов в AS2 приводит к неприятному косяку) -поскольку вопрос был об onEnterFrame, то логично и говорить об наследниках MovieClip, у которых onEnterFrame уже есть (какой смысл в "прединициализации" в этом контексте не очень понятно) -onEnterFrame в MovieClip не инициализирован (undefined), а только объявлен, но этого достаточно ps. дискутировать не стану, нечего обсуждать |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:13. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|