"Невозможно получить доступ к свойству или методу пустой ссылки на объект."без какой-либо значимой трассировки стека - PullRequest
0 голосов
/ 26 января 2012

Регулярно во время запуска приложения я получаю

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at mx.managers::SystemManager/stageEventHandler()[C:\autobuild\3.4.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:5649]

Это полная трассировка стека. Очевидно, я думаю, что-то не так, но я не могу понять, что. Могу ли я найти причину этого плохого поведения?

РЕДАКТИРОВАТЬ

Добавив мои источники SDK в мой отладчик, я теперь могу точно сказать, какая это строка:

    private function stageEventHandler(event:Event):void

    {

        if (event.target is Stage)

            mouseCatcher.dispatchEvent(event); // This is line 5649

    }

mouseCatcher действительно null. Текущий целевой объект действительно является объектом Stage, а тип события содержит строку "deactivate". Поскольку событие происходит при запуске приложения (до того, как я пытаюсь выполнить какое-либо взаимодействие с пользователем), я предполагаю, что это своего рода ошибка инициализации, но где? а почему?

Ответы [ 2 ]

1 голос
/ 26 января 2012

Посмотрите на исходный код, это всегда ваш лучший вариант. 3.4 SDK является открытым исходным кодом (кроме datavisualization и самого Flash Player), и вы, вероятно, уже имеете его источник в папке FlashBuilder / FlexBuilder install / sdks. Используйте grep или windows grep, чтобы найти нужный файл (или найти то, что плавает на вашей лодке). Откройте файл SystemManager и проверьте, что происходит в этой строке, проверьте наличие вызовов метода (если он снова используется public grep, если он приватный, вам просто нужно посмотреть в SystemManager). Постарайтесь понять, почему он дошел до этой точки, поскольку, как отмечают некоторые другие, это, скорее всего, проблема, связанная со временем, когда вы пытаетесь получить доступ к чему-либо до того, как это было назначено, в этом случае SystemManager, вам, вероятно, нужно отложить любое действие, которое вы выполняете. Принимая это, вы вызываете ошибку в более поздней части жизненного цикла (если вы используете событие инициализации или преинициализируете, попробуйте вместо этого создать creationComplete, поскольку оно будет отправлено после вызова метода createChildren).

Примечание: шахта находится здесь

C: \ CleanFS \ SDKs \ прогибается \ 3.4.0.9271 \ рамки \ Projects \ Framework \ SRC \ тх \ менеджеров

В моей копии SystemManager с версией SDK у меня есть номер строки, который не имеет никакого смысла, так как это закрытие блока, а не исполняемая строка, поэтому вам придется взглянуть на вашу конкретную версию.

0 голосов
/ 26 января 2012

Похоже, вы используете Flex 3.4 SDK. Вы слушаете событие ADDED_TO_STAGE при загрузке приложения? Или делать что-нибудь с объектом Stage под нагрузкой? Если это так, вы можете столкнуться с ошибкой, специфичной для 3.4 SDK: http://bugs.adobe.com/jira/browse/SDK-23332

Наиболее очевидным решением является замена 3.4 SDK для более поздней версии (3.4A, 3.5 или 3.6). Вы можете сделать это здесь: http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3

Весь ваш код должен быть обратно совместим с новыми Flex 3 SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...