![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2009
Сообщений: 34
|
Здравствуйте.
Помогите, пожалуйста. В простейшем участке кода получаю странные ошибки. ActionScript 3, Adobe Flash CS4. package { import fl.controls.DataGrid; class DataGridInit extends MovieClip { private static function initDataGrid() { var data_grid:DataGrid = new DataGrid(); trace(data_grid) //Сообщает, что объект типа DataGrid, все ок stage.addChild(data_grid); // А вот тут сразу же получаю ошибки } } } TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at fl.containers::BaseScrollPane/drawBackground() at fl.controls::DataGrid/draw() at fl.core::UIComponent/callLaterDispatcher() TypeError: Error #2007: Параметр child не должен быть равен нулю. at flash.display::DisplayObjectContainer/addChildAt() at fl.controls::BaseButton/drawBackground() at fl.controls::BaseButton/draw() at fl.core::UIComponent/drawNow() at fl.controls::ScrollBar/draw() at fl.core::UIComponent/callLaterDispatcher() Вроде бы тут ничего сверхестественного не делаю, откуда такое странное поведение флеша? |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
вызываешь
initDataGrid() до того как DataGridInit добавлен на сцену. .т.е. надо сначала addChild(DataGridInit) а потом у него вызвать initDataGrid().. и вообще очень странный класс. private static function - не работает с данными экземпляра, а stage - это данные экземпляра. передавай stage в качестве параметра ф-ции Но как ты собираешся достукиваться до датыгрид извне?
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: May 2009
Сообщений: 34
|
Котяра, я привел упрощенный класс. static там действительно не нужен, это я просто ошибся при копировании, пока упрощал код. Извиняюсь, если запутал.
Покажу более правильный код, в котором по прежнему вижу эти ошибки: |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
я писал, что
Цитата:
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 01.03.2010 в 10:39. |
|
|||||
|
Регистрация: May 2009
Сообщений: 34
|
Котяра, это базовый класс. Самый первый, который вызывается флешем. Он прописан в свойствах сцены. Его не нужно добавлять. У него есть stage, и это рабочий класс - у меня там игра работает без проблем. Я специально у себя закомментировал абсолютно всё, оставил только добавление Datagrid - и получаю ошибки. Даже со сцены все объекты удалил — результат тот же.
При чем это наблюдается похоже именно в конкретном .fla-файле, который в общем-то мне и нужен. Я взял рабочий пример, скопировал код напрямую в "Actions - frame", минуя классы. В одном fla-файле работает, в другом сыпет ошибками. Перезапуск Flash CS4 не помогает. Уже не знаю, куда и думать. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
потрэйсь стэйджвсё-таки..
и сделай в конструкторе
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: May 2009
Сообщений: 34
|
Всё, проблема найдена. Нужно было в сцену добавить компонент Datagrid и настроить там (при желании) скин, я этого не знал.
Котяра, спасибо за помощь. |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:14. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| datagrid , Ошибка #1009 |
| Опции темы | |
| Опции просмотра | |
|
|