Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Как создать экземпляр объекта? (http://www.flasher.ru/forum/showthread.php?t=53266)

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
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);
прилагаю исходник. закомментированное -- иной вариант.

Штрек 31.12.2003 01:32

Откуда столько ума в одной голове?!
Где то содрал небось. :p


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

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