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

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

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

Регистрация: Jan 2007
Сообщений: 39
Отправить сообщение для FilimoniC с помощью ICQ
По умолчанию Подгрузить внешний класс

Здравствуйте!
В данный момент занимаюсь переделыванием однго проекта на AS2 в AS3, попутно модернизируя.

Проблема следующая: нужно сделать в данном проекте модульность, то есть чтобы в случае правки или добавления какого-ибо элемента достаточно было подменить только один SWF-файл.

Код:
.\Main.swf
.\com\InputField.swf
.\com\ConfirmButton.swf
Собственно, несколько вопросов:
- Возможно ли такое на AS3?
- Как правильно присоединить вынести класс с графикой во внешний файл?
- Как правильно с ним работать так, чтобы и класс имел доступ к основному мувику, и наоборот - мувик имел доступ к методам класса.

Знаю, где-то мелькало что-то подобное, поиском пользовался, не нашел!

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

Регистрация: Sep 2002
Сообщений: 30,787
1) Да;
2) Непонятен вопрос;
3) Интерфейсы.

Старый 10.12.2007, 14:27
FilimoniC вне форума Посмотреть профиль Отправить личное сообщение для FilimoniC Посетить домашнюю страницу FilimoniC Найти все сообщения от FilimoniC
  № 3  
Ответить с цитированием
FilimoniC

Регистрация: Jan 2007
Сообщений: 39
Отправить сообщение для FilimoniC с помощью ICQ
Цитата:
Сообщение от __etc
2) Непонятен вопрос;
те нужно ли каждый класс привязывать к DocumentClass (отсюда - под класс новый документ), или можно подгрузить SWFку как библиотеку классов, как правильно Linkage настроить во внешнем SWF-файле.

Цитата:
Сообщение от __etc
3) Интерфейсы.
т.е.?
типа LocalConnection
или я смогу обращаться к ним как
Код:
/*
Как-то подгружаем библиотеку SWF, содержащую LoadedClass
*/
var loadedClass_mc = new LoadedClass();
loadedClass_mc.setVariable("xxx", "yyy");
addChild(loadedClass_mc);
Может есть примеры, подкиньте плиз!

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

Регистрация: Sep 2002
Сообщений: 30,787
Узнайте, что такое интерфейс.
Вопросы отпадут.

И про applicationDomain.getDefinition.

Старый 10.12.2007, 15:29
FilimoniC вне форума Посмотреть профиль Отправить личное сообщение для FilimoniC Посетить домашнюю страницу FilimoniC Найти все сообщения от FilimoniC
  № 5  
Ответить с цитированием
FilimoniC

Регистрация: Jan 2007
Сообщений: 39
Отправить сообщение для FilimoniC с помощью ICQ
Большое спасибо, с подгрузкой разобрался, конструктор класса подгружаемого объекта выполнился. А вот с функциями проблема:
Код:
TypeError: Error #1006: myFunction is not a function.
	at LibLoader/::completeHandler()
Это как раз "фиксится" интерфейсом, так?

Простите за неграмотность, просто приходится переделывать проект где весь код в кадрах, нет никаких классов итп, написанный по 7 плеер, трудновато попутно учить AS3. Благо временем почти не ограничен

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

Регистрация: Sep 2002
Сообщений: 30,787
Я не знаю, что вы делаете для получения подобной ошибки. Но явно что-то не так.

Старый 10.12.2007, 16:17
FilimoniC вне форума Посмотреть профиль Отправить личное сообщение для FilimoniC Посетить домашнюю страницу FilimoniC Найти все сообщения от FilimoniC
  № 7  
Ответить с цитированием
FilimoniC

Регистрация: Jan 2007
Сообщений: 39
Отправить сообщение для FilimoniC с помощью ICQ
В загрузчике
Код:
var a:Class = info.applicationDomain.getDefinition("SquareClass") as Class;
addChild( new a() ); // Выдает "Constrictor started", начинает реагировать на крыску
trace (a.myFunction("hello!")); // Вылетает ошибка.
В библиотеке, в файле MyExpSymbol.as
Код:
package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	
	class MyExpSymbol extends MovieClip  {
		var _counter:Number;
		var _isPressed:Boolean;

		public function MyExpSymbol() {
			_counter = 0;
			_isPressed = false;
			addEventListener(MouseEvent.MOUSE_OVER,onMouseOver);
			addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);
			trace ("Constrictor started");
		}
		public function onMouseOut(event:MouseEvent):void {
			if (_isPressed) {
				event.currentTarget.scaleX -= 0.5;
				event.currentTarget.scaleY -= 0.5;
				_isPressed = false;
			}
		}
		public function onMouseOver(event:MouseEvent):void {
			if (!_isPressed) {
				event.currentTarget.scaleX += 0.5;
				event.currentTarget.scaleY += 0.5;
				_isPressed = true;
			}
		}
		public function myFunction(str:String):Number
		{
			trace("HoHo:"+str+"!!");
			return str.length;
		}
	}

}//Package
Linkage такой:
Имя Эдемента в библиотеке : MyExpSymbol
Class = SquareClass
BaseClass = MyExpSymbol

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

Регистрация: Sep 2002
Сообщений: 30,787
Так «a» — это не экземпляр класса, а сам класс. У класса нет такого метода.

Старый 10.12.2007, 16:23
FilimoniC вне форума Посмотреть профиль Отправить личное сообщение для FilimoniC Посетить домашнюю страницу FilimoniC Найти все сообщения от FilimoniC
  № 9  
Ответить с цитированием
FilimoniC

Регистрация: Jan 2007
Сообщений: 39
Отправить сообщение для FilimoniC с помощью ICQ
Блин точно. Извините, туплю.

Поправился :
Код:
var a:Class = info.applicationDomain.getDefinition("SquareClass") as Class;
var obj = new  a(); // Выдает "Constrictor started", начинает реагировать на крыску
addChild( obj );
trace (obj.myFunction("hello!")); // Выдает "HoHo:hello!!!", затем 6 (длинна hello!)
Все работает, спасибо большое!

Так зачем же нужен Interface, я так и не понял.
По-сути, как я понял, это аналог .h (header) - файла в C., то есть попросту описывает, что можно из содержимого класса юзать?
Где его конкретно применять так и не понял.


Последний раз редактировалось iNils; 10.12.2007 в 17:21.
Старый 10.12.2007, 17:23
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
FilimoniC, не надо сообщать о каждом вашем шаге отдельным постом, когда хотите что-то добавить, используйте кнопку и редактируйте последнее сообщение.

Интерфейсы описывают, какие свойства обязаны быть у класса для корректной работы.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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