Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему при обращении по instance name получаем null? (http://www.flasher.ru/forum/showthread.php?t=120083)

Fergus 11.01.2009 21:31

Почему при обращении по instance name получаем null?
 
Ситуация такая. Во флешке два фрейма: в первом прелоадер, во втором - все остальное.
Во втором фрейме есть объект, которому присвоено некое instance name.
При обращении к нему по этому именни мы получаем null. При этом если его перенести в первый кадр, то все нормально, получаем нужный объект.
Причем, когда он во втором фрейме, он все-таки существует: если запросить какой-то несуществующий объект, то ошибку выводит компилятор и прерывает компиляцию.

Так как же к нему обращаться чтобы получать нормальный объект?

Irohni 11.01.2009 21:41

Вы видимо обращаетесь еще до того как этот объект загрузиться, напишите во втором кадре trace(instance_name) - должно работать, так же проверьте путь обращения.

ramshteks 11.01.2009 21:43

не использовать фреймы

etc 11.01.2009 21:54

1. Не пишите код в кадрах;
2. Не используйте прямое обращение по имени, для обращения по имени есть метод getChildByName.

Kuruki 11.01.2009 22:01

Цитата:

Сообщение от __etc (Сообщение 789728)
2. Не используйте прямое обращение по имени, для обращения по имени есть метод getChildByName.

_etc, а можно (в смысле правильно ли это) обращаться к клипу напрямую, если он является дитем клипа-класса, загруженного из swc? Ведь получается он уже свойством является.

Fergus 11.01.2009 22:02

Цитата:

Сообщение от __etc (Сообщение 789728)
1. Не пишите код в кадрах;
2. Не используйте прямое обращение по имени, для обращения по имени есть метод getChildByName.

1. Код в кадрах я не пишу.
2. Спасибо, попробую воспользоваться.

Добавлено через 5 минут
Если написать во втором фрейме trace(obj) - то он возвращает нормальный объект.
А как его заставить возвращать нормальный объект, если не писать код в кадрах?

etc 11.01.2009 22:13

Цитата:

Сообщение от Kuruki (Сообщение 789733)
_etc, а можно (в смысле правильно ли это) обращаться к клипу напрямую, если он является дитем клипа-класса, загруженного из swc? Ведь получается он уже свойством является.

Ого, вы swc загружаете? А я думал, что они вкомпиливаются в проект на стадии компиляции…
Обращаться также, getChildByName.

Fergus 11.01.2009 22:17

Цитата:

Сообщение от ramshteks (Сообщение 789726)
не использовать фреймы

А как же тогда прелоадер сделать?

etc 11.01.2009 22:21

Прелоадер можно сделать и без писанины в кадрах. Всё в тех же классах.

Kuruki 11.01.2009 22:25

Цитата:

Сообщение от __etc (Сообщение 789736)
Ого, вы swc загружаете? А я думал, что они вкомпиливаются в проект на стадии компиляции…

Хорошо, клипа-класса, вкомпиленного из swc. :)
Спасибо

Fergus 11.01.2009 23:12

Цитата:

Сообщение от __etc (Сообщение 789739)
Прелоадер можно сделать и без писанины в кадрах. Всё в тех же классах.

Блин! Вы все путаете!
Я спршиваю как сделать прелоадер вообще не используя кадры. Я в них и не пишу. У меня отдельный класс - прелоадер. Который инициализируется в методе-конструкторе класса документа.

Только конструктор класса документа продолжает выполняться, пока прелоадер работает и пока весь файл недогрузился. Соответственно, объектов, к которым он обращается - хоть напрямую по инстанс неймам, хоть через метод - все равно еще нету.

А как без кадров можно прелоадер сделать - мне непонятно. Ведь не может загрузиться часть кадра и отслеживать закгрузку другой части. Приходится разбивать на два кадра.

ramshteks 11.01.2009 23:38

ну если я прально понял то просто класс прелоадера должен быть документ классом

dimarik 11.01.2009 23:56

Цитата:

Сообщение от Fergus (Сообщение 789757)
А как без кадров можно прелоадер сделать - мне непонятно. Ведь не может загрузиться часть кадра и отслеживать закгрузку другой части. Приходится разбивать на два кадра.

Разбейте приложение на движок (с классими, прелоадером) и библиотеки с ресурсами графики, звуков.

Fergus 12.01.2009 00:01

Цитата:

Сообщение от ramshteks (Сообщение 789765)
ну если я прально понял то просто класс прелоадера должен быть документ классом

Как это? О_о
Я пытаюсь создать специально отдельный лкасс preloader чтоб не мешать его с основным приложением. А Вы предлагаете обратно все перепутать.

Добавлено через 1 минуту
Цитата:

Сообщение от dimarik (Сообщение 789769)
Разбейте приложение на движок (с классими, прелоадером) и библиотеки с ресурсами графики, звуков.

Вы имеете в виду создать несколько swf, так чтоб прелоадер в себя подгружал основную?
Так я умею, но, вообще-то, хотел от этого уйти и использовать внутренний прелоадер.

etc 12.01.2009 00:25

http://etcs.ru/blog/as1/export_in_se...ame_flash_cs3/

Fergus 12.01.2009 09:59

Цитата:

Сообщение от __etc (Сообщение 789778)

Спасибо.


Часовой пояс GMT +4, время: 07:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.