![]() |
|
||||||||||
|
|
|
|||||
|
Здравствуйте!
В данный момент занимаюсь переделыванием однго проекта на AS2 в AS3, попутно модернизируя. Проблема следующая: нужно сделать в данном проекте модульность, то есть чтобы в случае правки или добавления какого-ибо элемента достаточно было подменить только один SWF-файл. Собственно, несколько вопросов: - Возможно ли такое на AS3? - Как правильно присоединить вынести класс с графикой во внешний файл? - Как правильно с ним работать так, чтобы и класс имел доступ к основному мувику, и наоборот - мувик имел доступ к методам класса. Знаю, где-то мелькало что-то подобное, поиском пользовался, не нашел! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
1) Да;
2) Непонятен вопрос; 3) Интерфейсы. |
|
|||||
|
Цитата:
Цитата:
типа LocalConnection или я смогу обращаться к ним как Может есть примеры, подкиньте плиз! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Узнайте, что такое интерфейс.
Вопросы отпадут. И про applicationDomain.getDefinition. |
|
|||||
|
Большое спасибо, с подгрузкой разобрался, конструктор класса подгружаемого объекта выполнился. А вот с функциями проблема:
Это как раз "фиксится" интерфейсом, так? Простите за неграмотность, просто приходится переделывать проект где весь код в кадрах, нет никаких классов итп, написанный по 7 плеер, трудновато попутно учить AS3. Благо временем почти не ограничен |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Я не знаю, что вы делаете для получения подобной ошибки. Но явно что-то не так.
|
|
|||||
|
В загрузчике
var a:Class = info.applicationDomain.getDefinition("SquareClass") as Class;
addChild( new a() ); // Выдает "Constrictor started", начинает реагировать на крыску
trace (a.myFunction("hello!")); // Вылетает ошибка.
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
Имя Эдемента в библиотеке : MyExpSymbol Class = SquareClass BaseClass = MyExpSymbol |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Так «a» — это не экземпляр класса, а сам класс. У класса нет такого метода.
|
|
|||||
|
Блин точно. Извините, туплю.
Поправился : 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. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
FilimoniC, не надо сообщать о каждом вашем шаге отдельным постом, когда хотите что-то добавить, используйте кнопку
и редактируйте последнее сообщение.Интерфейсы описывают, какие свойства обязаны быть у класса для корректной работы. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|