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

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

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

Регистрация: Sep 2012
Сообщений: 28
По умолчанию Конфликт одинаковых имён классов у загружаемых роликов

Добрый день! Есть такой вопрос по конфликту классов с одинаковыми именами. Есть ролик-загрузчик (loader.swf). Есть ролики app1.swf и app2.swf, у которых в первом кадре создаётся объект класса Model. А именно:

Код:
 import app.Model;
	
	var model:Model = new Model();
	model.init();
Код этот одинаков и в том ролике и в другом.

А вот ниже приведён код класса Model для app1.swf:

Код:
class app.Model {		
	
	function Model() {
		
	}
	
	public function init():String {		
		return "This is application 1. Initialization is done.";
	}
}
Ниже приведён код класса Model для app2.swf:

Код:
class app.Model {		
	
	function Model() {
		
	}
	
	public function init():String {		
		return "This is application 2. Initialization is done.";
	}
}
Ниже представлен код единственного кадра ролика-загрузчика:

Код:
	var loader_mc:MovieClip = _root.createEmptyMovieClip("loader_mc", _root.getNextHighestDepth());
	loader_mc._x = 100;
	loader_mc._y = 140;
	
	btn1.onRelease = function():Void {
		_root.mcLoader.unloadClip();
		_root.mcLoader.loadClip("app1/app1.swf", _root.loader_mc);	
	}
	
	btn2.onRelease = function():Void {
		_root.mcLoader.unloadClip();
		_root.mcLoader.loadClip("app2/app2.swf", _root.loader_mc);	
	}
	
	var mcLoader:MovieClipLoader = new MovieClipLoader();
	mcLoader.addListener(this);		
	
	function onLoadInit(mc:MovieClip) {
		_root.app_txt.text = mc.model.init();
	}
Загрузчик после загрузки отображает у себя в текстовом поле строку из загруженного ролика, путём вызова его функции init(). То есть для app1.swf это строка "This is application 1. Initialization is done.", а для app2.swf это "This is application 2. Initialization is done."
Так вот. Если ролик-загрузчик сначала загружает app1.swf, то в текстовом поле правильно отображается значение из его класса Model, то есть "This is application 1. Initialization is done." Теперь, если его выгрузить и загрузить app2.swf, то в текстовое поле по-прежнему подставляется значение "This is application 1. Initialization is done.", а не "This is application 2. Initialization is done." из класса Model у ролика app2.swf.
И обратная ситуация после перезапуска loader.swf: если сначала загрузить app2.swf - после его выгрузки и загрузки app1.swf, остаётся значение из класса Model ролика app2.swf.

Я знаю, что в AS3 такую проблему решали как-то через указание ApplicationDomain, а вот для AS2 вообще не знаю что делать. Причём та же штука у меня происходит и с линкованными на классы с одинаковыми именами и пакетами мувиками в библиотеке загружаемых роликов - то есть эти мувики начинают вести себя как предидущие ролики, у которых имена/пути классов одинаковые. Пока что приходится менять имена некоторых пакетов, но это, как мне кажется, не выход. Если кто-то знает, как решить эту проблему, очень прошу помочь!
Вложения
Тип файла: rar example.rar (69.6 Кб, 40 просмотров)

Старый 04.09.2012, 09:40
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Логично разные пакеты использовать.
Код AS1/AS2:
delete _global.app.Model;

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

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

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


 


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


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