Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.11.2009, 15:23
incorp вне форума Посмотреть профиль Отправить личное сообщение для incorp Найти все сообщения от incorp
  № 1  
Ответить с цитированием
incorp

Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
По умолчанию Loader не добавляется в список отображения(грузим ас2)

Как обычно сразу к коду:
Код AS3:
private function doLoadComponent( component:ComponentBean, params:Object ) : void {
loader_as2 = new SWFLoader();
target.addChild( loader_as2);
//... дальше идет создание реквеста и лоад. работает, заменяем на
 
private function doLoadComponent( component:ComponentBean, params:Object ) : void {
loader_as2 = new Loader();
target.addChild( loader_as2);
//... перестает работать, Error #1034: Ошибка типа Coercion: невозможно преобразовать flash.display::Loader@4e5d641 в mx.core.IUIComponent.
в хелпе черным по русскому написано: addChild(ldr); тобишь в список отображения должен добавляться сам лоадер. может не туда добавляем? но ведь SWFLoader добавляли и все было хорошо.
П.С. как человек который любит лично разбивать лоб о грабли я проверил утверждение о том, что если через SWFLoader грузить as2, загруженое содержимое будет работать не адекватно. Не адекватно равно вот чему:
трейс при первой загрузке:
in first frame: _root=_root/this=_root/_level0=undefined/_global.tempvar = 123
in LocalConn from flex: _root=_root/this=[object Object]/_level0=undefined/_global.tempvar = 123
in root func: _root=_root/this=_root/_level0=undefined/_global.tempvar = 123

трейс при повторной загрузке в той же сессии:
in first frame: _root=_root/this=_root/_level0=undefined/_global.tempvar = 123
in LocalConn from flex: _root=undefined/this=[object Object]/_level0=_level0/_global.tempvar = undefined
in root func: _root=undefined/this=_level0/_level0=_level0/_global.tempvar = undefined
При первой загрузке у нас в LC есть рут, но нет левел0, при повторной все ровно наоборот. На мой взгляд очень познавательно, не так ли?


Последний раз редактировалось incorp; 03.11.2009 в 15:26.
Старый 03.11.2009, 15:32
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 2  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
кто такой SWFLoader?
и кто такой target?
видно что ф-ция addChild объекта target - принимает в качестве аргумента mx.core.IUIComponent, которым не является loader, a SWFLoader соответственно является)
а по поводу _root и level0 - просто не надо их использовать.
__________________
Отряд Котовскага

Старый 03.11.2009, 16:03
incorp вне форума Посмотреть профиль Отправить личное сообщение для incorp Найти все сообщения от incorp
  № 3  
Ответить с цитированием
incorp

Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
А вот кто они такие, смотри:
getQualifiedClassName(loader_as2)=flash.display::Loader - обычный лоадер
getQualifiedClassName(target)=mx.containers::Canvas - сюда грузим
getQualifiedClassName(loader_as2)=mx.controls::SWFLoader - swf лоадер

из чего совершенно не ясно почему лоадер воспринимается как IUIComponent.
Насчет рут и левел0 - не я придумал их использовать, просто было написано много игр еще при царе горохе и конечно преписывать их на ас3 или с нормальным синтаксисом никто не собирается. Поэтому их надо как то запихать во флексовое лобби.
Ну и потом, я в упор не вижу разницы с примером из хелпа:
Код AS3:
var ldr:Loader = new Loader();
 ldr.mask = rect;
 var url:String = "http://www.unknown.example.com/content.swf";
 var urlReq:URLRequest = new URLRequest(url);
 ldr.load(urlReq);
 addChild(ldr);

Старый 03.11.2009, 16:15
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
разница в targete - target = flex компонент, соответственно его чилды должны быть, компонентами, а Loader это не IUIComponent.
SWFLoader как раз и оборачивает content в IUIComponent.
Используй его.
Для работы с as2 кодом используй localConnection или события: см здесь:
__________________
Отряд Котовскага

Старый 03.11.2009, 16:53
incorp вне форума Посмотреть профиль Отправить личное сообщение для incorp Найти все сообщения от incorp
  № 5  
Ответить с цитированием
incorp

Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
ага, вроде дошло. та штука в которую я пытаюсь добавить лоадер вовсе не желает его там видеть. спасиб.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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