Совет: как отладить ошибку AS3 # 1009
Один из наиболее распространенных вопросов, которые я вижу на форумах и получаю от коллег, – как отлаживать ошибку 1009, также известную как «ошибка ссылки на нулевой объект». Или, как я ее называю, «досадная ошибка москита из ада». вверх, и, к сожалению, сама ошибка не содержит много информации об источнике ошибки. В этом кратком совете мы рассмотрим некоторые шаги, которые вы можете предпринять, чтобы выследить этого комара и хорошо его раздавить.
Вступление
Этот фрагмент является первым продолжением более общего руководства «Исправление ошибок в AS3» . Если вы хотите лучше понять некоторые приемы, описанные в этом совете, вы можете сначала прочитать их полностью.
Шаг 1: понять ошибку
Жаль, что Adobe не предоставляет (или не может) предоставить дополнительную информацию о причинах этой ошибки. Прежде всего, это довольно тупо сформулировано (как и все их ошибки, но это больше, чем большинство):
Ошибка типа: ошибка № 1009: невозможно получить доступ к свойству или методу ссылки на пустой объект
Давайте попробуем изложить это в повседневных условиях. Ошибка 1009 означает, что вы пытались что-то сделать с переменной, которая, как вы предполагаете, имеет значение, но на самом деле это не так. Flash не нравится это. Тебе это тоже не понравится; представьте, что у вас был стакан, который, как вы предполагали, был полон вкусного напитка по вашему выбору, но на самом деле был пуст. Вы хватаете стакан, ожидая освежающего глотка, но вместо этого вы чувствуете удручающий вес пустого стакана. Это ваша личная ошибка 1009.
В ActionScript, если вы делаете это:
При запуске кода Flash будет работать очень быстро (технический термин «выдает ошибку»). Переменная s может быть объявлена, но ее значение равно null (мы никогда не устанавливали значение, просто объявляли переменную), поэтому вызов метода toUpperCase для нее проблематичен.
Для ясности, поскольку s объявлен как String , компилятор не имеет проблем с кодом: есть переменная с именем s , это String , а toUpperCase является допустимым методом для вызова на String s. Ошибка, которую мы получаем, является ошибкой во время выполнения , что означает, что мы получаем ее только при запуске SWF. Только когда логика выполнена, мы можем теперь увидеть, как это получается.
Шаг 2: Разрешить отладку
Как и в случае любой ошибки во время выполнения, иногда довольно легко сказать, что происходит, без какой-либо дополнительной информации. Но в других случаях полезно сузить это дальше. На этом этапе попробуйте включить «Разрешить отладку». Когда эта опция включена, вы получаете ошибки, которые также дают номера строк. Кроме того, вы можете «Отладить фильм», нажав Command-Shift-Return / Control-Shift-Enter.
Для этого см. Общую статью с советами по отладке «Исправление ошибок в AS3».
Иногда этого достаточно. Знание конкретной строки может быть всей необходимой вам информацией. Если нет, мы углубимся в следующий шаг.
Наш дорогой редактор, Майкл Джеймс Уильямс, изложил смысл этого шага в известной статье, которую я с радостью представляю вам сейчас с его любезного разрешения:
Ошибка AS3 один-о-о-девять
Никогда не очень хороший знак.
Не нужно беспокоиться,
Хит Ctrl-Shift-Return
И это точно определит причину (ну, линию).
Шаг 3: Начните трассировку
Если вы обнаружили нарушающую линию, но все еще не знаете, что происходит, выделите ее. Возьмите каждую переменную в этой строке и проследите их до ошибки.
Поскольку ошибка возникает при доступе к свойству или при вызове метода с нулевой переменной, для покрытия ваших баз вы должны отслеживать любые переменные и свойства, за которыми сразу следует точка. Например, возьмем эту строку кода:
Следует признать, что это довольно надуманный кусок кода, для которого я не представляю практического применения, но вы должны определить четыре возможных null значения, к которым обращаются с помощью точки:
TypeError: Error #1009 Actionscript 3
I am extremely frustrated. I’m following a tutorial and mimicing it on my own. I have been able to sort out most of the errors so far but this one has me stumped. I have tried replacing all of the class files with the tutorial specimen ones but i still get the error.
Now, not really understanding the error properly I paste dumped the files online for you to look at.
As the error still occured when using the specimen class files I really have no idea where to begin. I will gladly try out any suggestions.
2 Answers 2
Trending sort
Trending sort is based off of the default sorting method — by highest score — but it boosts votes that have happened recently, helping to surface more up-to-date answers.
It falls back to sorting by highest score if no posts are trending.
Switch to Trending sort
Tip: If you allow debugging, the exception will tell you the exact line in the source code where the Error is being thrown. Assuming you’re using the Flash IDE, go to publish settings and in the Flash tab check «Permit debugging». This will makes thing much easier for you.
Anyway, you have an error message. If you read it carefully, you can narrow down where the problem is. I don’t know if you are a programmer or you have any interest in being one; if you’re not, this answer will hopefully solve this particular problem. Anyway, if you don’t mind the rambling, let me tell you that if you’re interested in becoming a better programmer, paying attention to errors and learning how to debug / troubleshoot problems is one of the most important abilities you need to develop (if not the most important one); so maybe this will give you a few hints you can use to solve other problems as well.
The message says:
Cannot access a property or method of a null object reference.
This means, at some point, you did something like this:
And someobject happened to be null. You can’t call methods or access properties of null.
Ok, so now you know, somewhere, a variable had null as its value. Notice that the fact that you define a variable of property doesn’t mean it actually holds an object.
This just says that a variable called mySprite can hold an object of the type Sprite:
But until at some point you create a Sprite and assign it to mySprite, the value held by mySprite will be null. If you do:
Before initializing mySprite (i.e. before assigning a Sprite to it), you will have this same Null Reference error.
This error message also offers some helpul context, which you can use to your advantage (in them old days. errors in Flash were silent; when things didn’t work, you had to manually trace down the problem).
Ok, let’s break this error message down:
What you have above is called a stack trace. It basically tells you where the code blew up, and also gives you some context: how did you get there.
The first line tells where the error actually occurred. That is, the construct method in the KeyObject object. That method was called from the KeyObject constructor, which was in turn called from the Ship constructor, which was in turn called from the Engine constructor.
Now, let’s analyze how you got there, following the stack trace, bottom-up:
Code in Engine constructor:
This creates a new Ship object. It passes a reference to the stage to the Ship constructor method.
Code in Ship constructor:
It grabs the ref passed in the previous step. It stores it and creates a new KeyObject object. The KeyObject constructor is passed a reference to the stage (which is the same ref that was passed from Engine to Ship).
Code in KeyObject constructor:
Now we got to the point where the error message told you the problem was. So, somewhere, you are using a variable that holds null and trying to access one of its methods or properties.
This KeyObject stores the reference to stage it was passed in a static variable and creates a new Object object. So far, no problems. KeyObject cannot be null (it’s a reference to a Class). The second line itself cannot have this null problem either. So, if this is all the code in that method, the problem has to be either in the third or the fourth line. Both access the stage reference you passed and try to call a method (addEventListener) on it. So if one fails, the other will fail as well. Then, the third line: that’s where the problem has to be.
So, at that point stage is null. As said previously, you can’t call a method on null, and that’s what the error is telling you.
Now, if you get back to the first method call, you can see this is the origin of the problem:
You can be pretty sure that, at this point, stage was null. Add that to the fact that Engine extends MovieClip (which is in turn a DisplayObject), and to the fact that any DisplayObject has a reference to the stage object only while it’s added to the display list. The conclusion: an instance of Engine was not attached to the display list when its constructor was ran.
A way to fix this (there might be others) could be moving the code in the Engine constructor to a separate function that will be executed only if / when the Engine object has a valid reference to the stage object.
Ошибка 1009. Не удается повесить обработчик на картинку-объект
В свойствах публикации: ActionScript 3 > Settings > Automatically declare stage instances
галочка стоит.
Может у меня не тот тип объекта? Может Button нужен? Как по пунктам присвоить instance name? Навожу курсор на картинку, F8, ввожу имя объекта, переключаюсь на закладку Property, ввожу Instance name, Ctrl+s, Ctrl+Enter
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null"
Имеется пакет сделанный на Adobe Flash Builder (AFB), создан 1 класс и подключен к главному проекту.
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
Здравствуйте, все сделала по уроку, но у меня выдает ошибку "null". Подскажите где ошибка
Сообщение от vlad275
Заменил instance name на имя объекта, теперь выводится ошибка C:\Users\admin\Desktop\myClass .as, Line 12 1120: Access of undefined property Symbol1F8.
Почему-то нельзя добавить Listener к объекту-картинке. Почему?
Добавлено через 15 минут
Не получается
Сообщение от vlad275
Если раньше такой объект был, то теперь его нет совсем.
Сообщение от vlad275
Так? Не работает
Сообщение от vlad275
Как повесить обработчик MouseUp?
у класса описал метод void __fastcall MainItem::MouseRightClc(TObject *Sender, TShiftState.
Повесить обработчик события на вставку строки
Подскажите, плиз, как повесить обработчик события на вставку строки в Экселе? Если это невозможно.
Как повесить обработчик на событие выхода из MS Access?
Как повесить обработчик на событие выхода из MS Access?
6 способов исправить ошибку iPhone 1009 при загрузке приложений
Пользователи iPhone регулярно загружают приложения и программное обеспечение из iTunes. Устройства iOS, включая владельцев iPad, получают доступ к iTunes по множеству причин. Однако некоторые пользователи обнаружили ошибки (например, ошибка 1009 iphone или код ошибки 1009) во время загрузки при попытке получить приложения из магазина.
Следует отметить, что может возникнуть несколько ошибок, но Apple распознает их и отправляет сообщение при блокировке доступа. Существует множество кодов ошибок, генерируемых для конкретных проблем. Всякий раз, когда появляется ошибка 1009 iPhone, вам необходимо исправить ошибку. Решение может быть простым, но вам нужно понять, почему это происходит.
Часть 1: Что такое ошибка iPhone 1009
Если на вашем iPhone или iPad отображается код ошибки сообщения 1009, пришло время проверить, есть ли простые способы решения проблемы, прежде чем посещать станцию обслуживания Apple или онлайн-поддержку Apple.
Код ошибки 1009 обычно возникает, если IP-адрес зарегистрирован Apple как пункт назначения, который не поддерживается в App Store, или если настройки прокси-сервера по умолчанию не применяются к вашему устройству iOS. Настройки iPhone по умолчанию настроены на работу со страной покупки. Джейлбрейк возможен, когда можно выявить конкретные ошибки.
Другими словами, данные кредитной карты и учетной записи iTunes должны совпадать с точки зрения страны происхождения. О любых изменениях необходимо уведомлять путем деавторизации более ранней учетной записи iTunes, а затем повторной авторизации iTunes с последними данными. В дороге люди почти не разбираются в таких деталях, и тогда возникает ошибка iPad/iPhone с кодом 1009.
Ошибка 1009 iPhone (такая же, как у iPad/iPod) может быть устранена, а иногда довольно легко. Следует понимать, что другие причины могут помешать загрузке приложения, а затем вызвать ошибку. Соответственно, есть не одно решение, чтобы избавиться от ошибки 1009.
Часть 2. Исправьте ошибку iPhone 1009 с помощью стороннего инструмента
Могут быть разные причины, по которым ваш iPhone сталкивается с ошибкой 1009. Но обычно ошибка 1009 возникает из-за системных проблем iOS на вашем устройстве. Итак, вам нужно исправить проблемы с системой iOS, чтобы исправить ошибку iPhone 1009. Но как это сделать? Не волнуйтесь, здесь я могу показать вам мощный инструмент Dr.Fone — Repair , чтобы справиться с этим. Это программное обеспечение разработано для исправления различных системных проблем iOS, ошибок iTunes и ошибок iPhone. С Dr.Fone вы можете легко решить эти проблемы менее чем за 10 минут. Самое главное, это не повредит ваши данные. Давайте прочитаем поле ниже, чтобы узнать подробности.
Dr.Fone — Ремонт
Один клик, чтобы исправить ошибку iPhone 1009
- Простой процесс, без проблем.
- Устранение различных системных проблем iOS, таких как невозможность загрузки приложений, зависание в режиме восстановления, белый логотип Apple, черный экран, зацикливание при запуске и т. д.
- Исправьте различные ошибки iTunes и iPhone, такие как ошибка 1009, ошибка 4005 , ошибка 14 , ошибка 21 , ошибка 3194 , ошибка 3014 и другие.
- Поддерживает все модели iPhone, iPad и iPod touch.
- Полностью совместим с Windows 10 или Mac 10.13, iOS 13.
Действия по исправлению ошибки iTunes 1009 с помощью Dr.Fone
Шаг 1. Выберите функцию «Восстановление системы» .
Установите Dr.Fone и подключите ваше устройство к компьютеру. Выберите «Восстановление системы» из списка инструментов.
Шаг 2: Запустите процесс
Нажмите «Стандартный режим» или «Расширенный режим», чтобы продолжить процесс восстановления.
Шаг 3: Загрузите прошивку
Чтобы исправить ошибку 1009, Dr.Fone скачает прошивку для вашего устройства. Вам просто нужно нажать на кнопку «Старт», чтобы начать загрузку прошивки.
Шаг 4. Исправьте ошибку 1009
Как только процесс загрузки будет завершен, Dr.Fone автоматически восстановит вашу систему iOS, чтобы исправить ошибку 1009 на вашем iPhone.
Шаг 5: Успешное восстановление
Через несколько минут программа сообщит вам, что ошибка исправлена. Так что здесь вы просто закончите весь процесс ремонта.
Часть 3. Исправьте ошибку iPhone 1009, быстро восстановив iTunes
На самом деле ошибка iPhone 1009 возникает по двум причинам: iPhone и iTunes. Почему? ошибка 1009 выскакивает при любых обстоятельствах при подключении iPhone к iTunes. Если вы подтвердили, что с вашим iPhone все в порядке, но ошибка 1009 не устранена, пришло время диагностировать и исправить ваш iTunes.
Dr.Fone — Восстановление iTunes
Лучший инструмент для исправления ошибки iPhone 1009, вызванной исключениями iTunes
- Исправляет все ошибки iTunes/iPhone, такие как ошибка 1009, ошибка 4013, ошибка 3194 и т. д.
- Устраняет любые проблемы, препятствующие подключению или синхронизации iPhone с iTunes.
- Не влияет на исходные данные iPhone или iTunes при исправлении ошибки 1009.
- Диагностирует и устраняет проблемы с iTunes за считанные минуты.
Следуйте этим инструкциям, чтобы исправить ошибку iPhone 1009, вызванную исключениями iTunes:
- Загрузите инструмент диагностики iTunes, установите и запустите его, чтобы открыть следующий интерфейс.
- Нажмите «Восстановление системы» среди всех функций. В новом окне выберите «Восстановление iTunes» и подключите iPhone к компьютеру. Теперь вы можете увидеть 3 варианта.
- Устранение проблем с подключением к iTunes: среди трех вариантов первым делом нажмите «Устранить проблемы с подключением к iTunes», чтобы диагностировать сбои подключения, вызвавшие ошибку 1009.
- Исправьте проблемы с синхронизацией iTunes: затем мы должны нажать «Исправить ошибки синхронизации iTunes», чтобы проверить, не привели ли проблемы синхронизации к ошибке 1009. Если такие проблемы есть, исправьте их напрямую.
- Исправьте ошибки iTunes: нажмите «Исправить ошибки iTunes», чтобы убедиться, что все основные компоненты iTunes в порядке.
- Исправление ошибок iTunes в расширенном режиме: если ошибка 1009 все еще появляется, возможно, что-то не так с некоторыми расширенными компонентами iTunes. В этом случае нажмите «Расширенный ремонт», чтобы исправить ошибку 1009 в расширенном режиме.
Часть 4: исправить ошибку iPhone 1009 с помощью настроек прокси
Основные ошибки в iOS-телефонах связаны с неправильными настройками прокси. Они могут вызвать проблемы, когда вы пытаетесь использовать определенные функции, такие как загрузка приложений из iTunes. Последние устройства iOS имеют автоматические настройки прокси-сервера, которые могут синхронизировать устройство без ручных настроек с iTunes. Однако настройки можно сбросить, чтобы избавиться от кода ошибки 1009, следующим образом:
1. Перейдите в главное меню на вашем iPhone или iPad.
2. Выберите и нажмите «Настройки».
3. Выберите Wi-Fi и нажмите, чтобы перейти в следующее меню.
4. Выберите активную сеть и нажмите маленькую стрелку.
5. Теперь вы можете видеть настройки прокси-сервера HTTP.
6. Если настройки прокси необходимо настроить вручную, перейдите в Вручную.
7. Введите IP-адрес сервера и сведения о порте, указанные провайдером.
8. Если требуется пароль прокси-сервера, включите его. Введите желаемое имя пользователя и пароль для активации.
9. Проверьте, устранена ли ошибка 1009 iPhone. В случае iPad проверьте, устранен ли код ошибки 1009 iPad.
Часть 5. Исправьте ошибку iPhone 1009 с помощью службы VPN
Когда ошибка прокси-сервера препятствует загрузке, вы также можете попробовать получить доступ к iTunes с помощью службы VPN.
1. Получите доступ к любому бесплатному или платному VPN-сервису. Просто Google для VPN в строке поиска, и вы найдете множество бесплатных и платных вариантов. Если вы не хотите пробовать бесплатный вариант, платные варианты от надежных поставщиков работают очень хорошо. Выберите платный вариант, который можно использовать и с другими услугами. Люди часто используют прокси-серверы для доступа к контенту для конкретной страны, когда путешествуют по делам или на отдых.
2. Убедитесь, что вы установили прокси-сервер для места, в котором вы находитесь. Например, если вы в настоящее время находитесь в Великобритании, установите параметры прокси-сервера в соответствии с Великобританией.
3. Безопасный способ — загрузить приложение VPN в учетную запись iTunes, а затем следовать простым инструкциям по установке. Затем приложение синхронизируется с iTunes. Поставщики услуг VPN предлагают списки прокси-серверов, которые вы можете выбрать из поддерживаемых серверами, расположенными в определенных странах.
4. Следует отметить, что бесплатные прокси часто действуют очень короткое время. Продолжайте пробовать несколько прокси, пока не добьетесь успеха. Единственное другое решение — попробовать платный вариант. В этом случае вы можете связаться с поставщиком услуг VPN, чтобы настроить App Store для вас.
Чтобы настроить службу VPN на вашем iPhone, сделайте следующее.
1. Нажмите «Настройки».
2. Затем нажмите «Общие».
3. Теперь доступна опция VPN.
4. Выберите нужную конфигурацию и добавьте ее.
5. В разделе «Добавить конфигурацию» заполните поля «Описание», «Сервер», «Учетная запись» и «Пароль».
6. Отметьте Отключение прокси.
Служба VPN теперь должна работать на вашем iPhone.
Часть 6. Исправьте код ошибки iPhone/iPad 1009 путем обновления прошивки
1. Например, обновление прошивки iPhone до версии 2.0 может работать только в той стране, где было установлено исходное программное обеспечение. Поскольку изначально он был установлен в определенной стране, загрузка и обновление также должны выполняться в той же стране.
2. Кроме того, Apple указывает, что обновление прошивки может быть доступно не во всех странах. Например, iPhone может быть настроен на использование iTunes в США, но может не иметь доступа к iTunes из страны, в которой магазин не работает.
3. Если вы пытаетесь загрузить версию программного обеспечения 2.0 в качестве обновления на свой iPhone или iPad, настройте параметры в соответствии с местоположением, в котором вы находитесь.
4. Измените настройки прокси-сервера или используйте службу VPN, чтобы она соответствовала исходной стране, указанной во время установки программного обеспечения.
5. Если страна, в которой вы сейчас находитесь, обслуживается iTunes, настройте параметры прокси-сервера в соответствии с вашим местоположением. Это решение может помочь при загрузке основных обновлений прошивки.
Часть 7. Проверьте, правильно ли загружаются другие приложения
Последний метод связан с кодом ошибки iPad 1009, возникающим только с определенными приложениями, не связанными с загрузкой прошивки или программного обеспечения Apple.
1. Проверьте, можете ли вы загрузить подобное приложение из iTunes.
2. Если вы можете, ошибки конфигурации могут быть исправлены разработчиком приложения.
3. Просто свяжитесь с разработчиком по электронной почте или любому другому указанному каналу связи и попросите конкретный совет, основанный на вашем реальном опыте. Отправьте подробную информацию о том, как вы пытались загрузить и точное сообщение.
4. Вероятнее всего, готовое решение будет доступно и отправлено вам в ближайшее время.
Ошибка 1009 iPhone — распространенная ошибка, связанная с совместимостью программного обеспечения. Это не имеет ничего общего с конфигурациями оборудования. Упомянутое выше решение должно работать при восстановлении соединения с iTunes. В следующий раз, когда вы получите сообщение «Не удается обработать запрос, код ошибки 1009 iPad», решение может быть прямо здесь.