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

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

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

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
По умолчанию Ошибка getDefinition [reference error] загруженного swf

Всем привет!

Есть свиф файл, в нём есть спрайт червя, у которого стоит экспорт в as и в 1 кадр классом Worm (на базе flash.display.Sprite).
Подгружаю swf и пытаюсь создать экземпляр Worm. Код сократил.

Код AS3:
package {
 
	import flash.*;
 
	public class Main extends Sprite {
		private var _swfLoader:Loader;
 
		public function Main():void {
			_swfLoader = new Loader();
			_swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			_swfLoader.load(new URLRequest ("MyWorm.swf"));
		}
 
		private function onComplete(event:Event):void {
			var target:LoaderInfo = event.target as LoaderInfo;
			var wormClass:* = target.applicationDomain.getDefinition("Worm");
		}
	}
}
Комплит срабатывает, последняя строчка вызывает
Код:
[Fault] exception, information=ReferenceError: Error #1065: Переменная Worm не определена.
Как правильно создать класс из подгруженного loader'ом SWF?
__________________
Нормально делай — нормально будет!

Старый 17.09.2011, 16:41
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 2  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
Загрузите свфку в текущий application domain и будет вам счастье.

Старый 17.09.2011, 17:57
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 3  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Спасибо, к сожалению не спасло. Делал так:

Код AS3:
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
 
...
 
var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
_swfLoader.load(new URLRequest ("MyWorm.swf"), context);
 
...
 
trace (_swfLoader.contentLoaderInfo.applicationDomain.getDefinition("Worm") as Class);
Последняя строчка вызывает ту же самую ошибку.

Help!
__________________
Нормально делай — нормально будет!

Старый 17.09.2011, 18:04
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 4  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
а свфка, которую грузите, на сцене ничего не содержит? У меня бывали глюки с этим.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 17.09.2011, 18:45
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 5  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Нет, абсолютно чистая. Только червяк в библиотеке. Пробовал его на сцену кинуть, всё равно reference error.
__________________
Нормально делай — нормально будет!

Старый 17.09.2011, 18:50
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Червяк экспортируется в первый кадр или нет?

Старый 17.09.2011, 18:54
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 7  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Да, галка экспорта стоит.
__________________
Нормально делай — нормально будет!

Старый 17.09.2011, 18:59
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Значит по факту класс там всё же нет, можно посмотреть декомпилятором.

Старый 17.09.2011, 19:10
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 9  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Security.allowDomain в подгружаемом файле не забыл?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 17.09.2011, 20:03
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 10  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
У меня всё локально. Попробовал Security.allowDomain(*) — не помогло.

Слова etc похожи на правду. Открыл swf, червяк есть, но ни слова про имя его класса "Worm".

Опишу подробнее, может я неправильно swf сделал.
1) Создаю в Flash IDE as3 файл.
2) Рисую червяка. Выделяю, F8, галка в as, в 1-й кадр ставится сама. Указываю класс Worm, база MovieClip (или Sprite)
3) Удаляю со сцены. Остаётся в библиотеке.
4) Сохраняю, публикую, забираю swf.
5) FlashDevelop'ом пытаюсь загрузить, получаю ошибку

Добавлено через 18 минут
getQualifiedClassName выдаёт flash.display::MovieClip но мне ведь и не нужен основной класс подгружаемой флешки, мне нужен только червяк.

Добавлено через 1 час 27 минут
Всем спасибо за участие и помощь. С чем был связан глюк не знаю, это был Flash CS4 10.0.2. При использовании Flash CS5.5 проблема сразу исчезла. Кстати, ещё CS4 не делал SWC-файлы.
__________________
Нормально делай — нормально будет!


Последний раз редактировалось tsarapkabel; 17.09.2011 в 21:31.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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