PDA

Просмотр полной версии : как зарегать в классе инстанс мувика


Gaen
03.09.2005, 19:38
решил-таки перейти на As 2.0 и ооп заодно... возникли непонятки [сабж]

ffffff
03.09.2005, 22:08
что ты имеешь ввиду под "зарегать инстанс мувика"?

artcraft
04.09.2005, 00:25
1. создаём rect.as:
//rect.as
class rect extends MovieClip {
function rect() {
this.beginFill(0xFF0000, 100);
this.moveTo(0, 0);
this.lineTo(100, 0);
this.lineTo(100, 100);
this.lineTo(0, 100);
this.lineTo(0, 0);
this.endFill();
}
}

2.
вставляем новый символ
называем его rect
ставим галку Export fot ActionScript
в поле Identifer: пишем rect
в поле AS 2.0 Class: пишем rect

3.
в первом кадре пишем:
_root.attachMovie("rect","rect1",0);

получаем красный квадрат

внимание вопрос:
как скриптом создать мувик класса rect (не аттачем, пропустив 2-ой шаг)

Gaen
04.09.2005, 00:59
я как раз именно это и имел ввиду - без аттача... но если прописать класс, то мувик, который уже на сцене, вроде тоже должен принадлежать к этому классу...

artcraft
04.09.2005, 01:35
я как раз именно это и имел ввиду - без аттача... но если прописать класс, то мувик, который уже на сцене, вроде тоже должен принадлежать к этому классу...нет поумолчанию все новые мувики связаны с классом MovieClip
прочесал весь хелп, но не нашёл как скриптом привязать другой класс :~/
есть Object.registerClass(), но для этого символ должен лежать в библиотеке т.е. должен быть создан руками,
а хочется скриптом !!!

:~/

ffffff
04.09.2005, 09:35
нет поумолчанию все новые мувики связаны с классом MovieClip
прочесал весь хелп, но не нашёл как скриптом привязать другой класс :~/
есть Object.registerClass(), но для этого символ должен лежать в библиотеке т.е. должен быть создан руками,
а хочется скриптом !!!

:~/


это очень плохо... возможно если надо сразу и класс и объект, то надо компонент создавать?

7thsky™
04.09.2005, 12:28
Старым проверенным способом


var t:Object = MovieClip.prototype;
t.applyClass = function (ClassConstructor:Function):Boolean {
//check
if (typeof ClassConstructor != 'function') {
return false;
} // end if

this.__proto__ = ClassConstructor.prototype;
this.constructor = ClassConstructor;
this.constructor.apply (this);
return Boolean (ClassConstructor (this));
}

// использование
some_mc.applyClass (Your_Super_Class_extends_MovieClip);

artcraft
04.09.2005, 17:02
7thsky™, огромное cпасибо,

PS: так тоже работает:
mc=_root.createEmptyMovieClip("r1",1);
mc.__proto__ = rect.prototype;
mc.constructor = rect;
mc.constructor();