![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2009
Адрес: UA -- Kherson
Сообщений: 29
|
Здравствуйте, простите, если уже было, но я по поиску на форуме не смог найти ответ (((
У меня проблема заключается в том, что я не могу обратиться к некоторым свойствам контента Лоадера. Я создал класс, который управляет загрузкой, отображением и размещением подгружаемой SWF-ки: Я этот класс использовал для подгрузки декоративных элементов для сайта: каждый элемент дизайна - отдельный объект класса MovieLoader. Всё отлично работает в плане загрузки, позицирования, масштабирования и т.п. Но когда мне понадобилось сделать некоторые элементы активными для пользователя, я не смог обратиться из самого класса MovieLoader к некоторым свойствам подгруженной SWF: - так не работает. Попробовал по-другому - тоже безуспешно: Выдает TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". Помогите, пожалуйста, как обратиться к свойствам и поменять их |
|
|||||
|
Может сделать композицию: в кастомном классе, расширяющем Sprite создаем экземпляр Loader. buttonMode и useHandCursor будут работать у этого класса кастомного.
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Регистрация: Mar 2009
Адрес: UA -- Kherson
Сообщений: 29
|
Цитата:
всё так же отлично работало, кроме вышеописанной проблеммы. У меня в классе MovieLoader содержался обращения типа или типа - тоже не работали. Последний раз редактировалось kirea; 03.08.2009 в 10:08. |
|
|||||
|
а на какой стадии вы контент от лоадера требуете?..может его нет еще?
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 107
|
buttonMode- свойство Sprite'a, т.е. если Вы загружаете битмап, то его нужно сперва засунуть в Sprite или MovieClip, а потом уже buttonMode использовать. А приведение Bitmap as MovieClip не сработает.
|
|
|||||
|
Регистрация: Mar 2009
Адрес: UA -- Kherson
Сообщений: 29
|
Цитата:
Как было видно на примере, я гружу не битмап, а MovieClip (логотип анимированный). Работает многое: x, y, scaleX, scaleY, alpha и т.п., а специфичные для MovieClip свойства - недоступны!!! |
|
|||||
|
> Как было видно на примере, я гружу не битмап, а MovieClip
В смысле SWF чтоли? buttonMode ставить, как свойство кастомного вашего объекта:
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Регистрация: Mar 2009
Адрес: UA -- Kherson
Сообщений: 29
|
Цитата:
package mainCode { import flash.events.*; import flash.display.*; import flash.net.*; import mainCode.main; public class MovieLoader extends MovieClip { public var loader :Loader; public var toStage :Boolean = false; //Показывать ли сразу после загрузки? public var SwfFile :String = ''; //Файл-источник //------------------------------------------------------------------------------- public function MovieLoader() { } //------------------------------------------------------------------------------- public function Load():void { if (main.canLoad) loading() else this.addEventListener(Event.ENTER_FRAME, accessToLoad); } //------------------------------------------------------------------------------- private function loading():void { main.canLoad = false; var req:URLRequest = new URLRequest(SwfFile); loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, fileLoaded); if (!NoPreload) loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, setPreload); loader.load(req); } //------------------------------------------------------------------------------- private function accessToLoad(event:Event):void { if (main.canLoad) { loading(); this.removeEventListener(Event.ENTER_FRAME, accessToLoad); } } //------------------------------------------------------------------------------- private function fileLoaded(event:Event):void { loader.x = x; loader.y = y; moveIt(); if (toStage) showOnStage(); main.swfRemain--; main.canLoad = true; loader.contentLoaderInfo.removeEventListener(Event.INIT, fileLoaded); if (!NoPreload) loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, setPreload); main.swfStage.addEventListener(Event.RESIZE, moveIt); if (main.swfRemain == 0) main.allLoaded(); var m:MovieClip = loader.content as MovieClip; //НЕ РАБОТАЕТ m.buttonMode = true; //НЕ РАБОТАЕТ } //------------------------------------------------------------------------------- } //class } //package Последний раз редактировалось kirea; 03.08.2009 в 12:36. |
|
|||||
|
Modus ponens
|
loader.content не обязан быть MovieClip, вполне может быть просто Sprite, или пользовательский класс наследник Sprite.
buttonMode - у Loader нет такого свойства.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2009
Адрес: UA -- Kherson
Сообщений: 29
|
ну если загружен именно MovieClip, неужели нету никакого способа изменять свойства загруженного мувика. Кроме, конечно, банального разделения моего класса на два класса: отдельно для Лоадера, и второй отдельный для управления мувиком. Уж очень не хочется менять интерфейсную часть класса, а то переделывать много в других классах придется...
|
![]() |
![]() |
Часовой пояс GMT +4, время: 12:33. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| content , loader |
|
|