Просмотр полной версии : Как создать экземпляр объекта?
Fish inc.
30.12.2003, 21:49
Вопросы, вероятно, ламерские, но, несмотря на это, прошу не глумиться.
1)Как собственно создать inctance объекта когда объявлен новый класс?
smth.prototype = new MovieClip();
smth.prototype.prop = "value";
smth.prototype.func = function(){}
И как теперь сделать экземпляр этого smth?
2)Как добавить в прототип обработчик события(например onClipEvent(load){})? (чтобы все экземпляры его имели)
3)Как добавить обработчик в мувиклип в библиотеке, чтобы этим обработчиком обладал клип, созданный через attachMovie?
4)Как добавить обработчик извне, только что созданному объекту?
Еще раз извините, если я спросил какую-то глупость.
iLoveYou
31.12.2003, 00:40
1.
вот мы создаем класс, да:
function Smth() {
}
Smth.prototype = new MovieClip();
Smth.prototype.prop = "value";
Smth.prototype.func = function() {
};
если бы это был просто класс, объектами которого в дальнейшем не являлись бы клипы, то новый объект создавался бы примерно так:
myobject=new MyClass(); но так как нас интересует несколько другое, привязываем класс к символу в библиотеке через linkage:
Object.registerClass("smth_symbol", Smth);
и создание объекта класса будет происходить следующим образом:
var smth_ref=_root.attachMovie("smth_symbol", "smth", 1);
trace (smth_ref.prop);
smth_ref -- ссылка на созданный объект, через которую с объектом можно работать.
2 и 3.
Smth.prototype.onEnterFrame = function() {
trace("onEnterFrame called");
};
как приявязывать класс к символу библиотеки, мы уже знаем, да?
полностью код:
function Smth() {
}
Smth.prototype = new MovieClip();
Smth.prototype.prop = "value";
Smth.prototype.func = function() {
};
Smth.prototype.onEnterFrame = function() {
trace("onEnterFrame called");
};
Object.registerClass("smth_symbol", Smth);
var smth_ref=_root.attachMovie("smth_symbol", "smth", 1);
4.
способов много можно придумать, все зависит от конкретной задачи.
4.1
smth_ref.onEnterFrame = function() {
this._x++;
};
убрать обработчик:
delete smth_ref.onEnterFrame;
4.2
var mybroadcaster = createEmptyMovieClip("0", 0);
ASBroadcaster.initialize(mybroadcaster);
mybroadcaster.onEnterFrame = function() {
this.broadcastMessage("onMyEnterFrame");
};
smth_ref.onMyEnterFrame = function() {
this._x++;
};
mybroadcaster.addListener(smth_ref);
убрать обработчик:
mybroadcaster.removeListener(smth_ref);
прилагаю исходник. закомментированное -- иной вариант.
Откуда столько ума в одной голове?!
Где то содрал небось. :p
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.