PDA

Просмотр полной версии : разборы c PROTOTYPE


processor
30.08.2005, 02:27
Хочу сделать наследника от TEXTFIELD.


proscroll.prototype=new TextField()

function proscroll (){
this._x=200
this._y=200
this._width=200
this._height=200
}


типа вот так. Правильно ? А как его на экран то вывести ?

Iv
30.08.2005, 03:23
что у тебя такое javascript?

- если флэш, то в общем правильно.
проблема действительно в том,
что тебе нужно делать отдельный метод типа create,
чтобы поиметь такое текстовое поле.

proscroll.prototype.__proto__ = TextField.prototype;
function proscroll() {
this._x = 200;
this._y = 200;
this._width = 200;
this._height = 200;
}

proscroll.create = function(thisObject, name, depth, initObject) {
thisObject.createTextField(name, depth, 0, 0, 10, 10);
var t_txt = thisObject[name]
t_txt.__proto__ = this.prototype;
for (var i in initObject) {
t_txt[i] = initObject[i];
}
this.call(t_txt);
return t_txt;
};

ставим на поле:
proscroll.create(_root, "my_txt", 0, {text:"hello world"});

St. Father
18.11.2005, 15:55
чтобы не генерить кучу тем отпишу здесь, т.к. помойму фтему.
//типа класс
function ff ()
{
trace ("ff");
}
//типа регистр класс для символа la
Object.registerClass ("la", ff);
// убиваем прототип обджекта из прото прототипа класса
ff.prototype.__proto__ = MovieClip.prototype;
//задаем онлоад функцию
ff.prototype.onLoad = function ()
{
trace ("loaded");
};
// аттачим и вдим: ff +newline + loaded
_level0.attachMovie ("la", "ll", 0);
// видим только: nu?
id = setInterval (function ()
{
_level0.ll.loadMovie ("test.swf");
trace ("nu?");
}, 3000);
вот собссна... мож я чего забыл?
З.Ы.: тест.свф есть

Iv
18.11.2005, 16:21
дык эта...
а что ты хочешь и что за test.swf и причем тут он?

St. Father
18.11.2005, 16:33
хочу наследуемую ф-ю онЛоад (читать РАБОТАЮЩУЮ) для ряда клипов (необязательно из библиотеки)
а тест.свф чтобы проверить онлоад)))
З.Ы.: необязательно из библиотеки == если есть способ запихать программно созданные мувики в класс или по-другому заставить работать ф-ю онлоад для них (не трогая MovieClip.prototype ;) ) - буду только счастлифф

St. Father
18.11.2005, 18:33
АХТУНГ!!! Помогите!!!

ffffff
18.11.2005, 18:50
а чем тебе прототип не нравится?

MOHCTEP
18.11.2005, 23:20
MovieClipLoader юзай. Штука классная. Тут пример у меня по другой маненько теме, но вроде похож по направлению. Посмотри...

KUZEN
19.11.2005, 00:34
У тебя там fla пустышка ...

MOHCTEP
19.11.2005, 16:36
Извиняюсь! Вот смотрите! :)

St. Father
21.11.2005, 08:46
фпопу МК лоадер! мне для оффа. попробуйте, плиз у кого МХ/МХ2004 мож у вас получится? о.0 чет баг нехороший... все ж прально вроде... :(

iNils
21.11.2005, 11:03
Тебя ffffff спрашивал чем не нравится прототип, а ты так и не ответил.

St. Father
21.11.2005, 12:01
Тебя ffffff спрашивал чем не нравится прототип, а ты так и не ответил.
эмм... всем нраицца... не работет токма... в чем прикол? о.0
З.Ы. еси речь идет про МК прототип... то не подходит... т.к. нужно выделить онЛоад у ЧАСТИ клипов. для этого и был создан символ "la".
Если есть другое решение - подскажите плз.

iNils
21.11.2005, 12:38
Взял твой скрипт. Сделал test.swf. Загружаю его в ll, после загрузки выводиться "loaded", через 3 секунды "nu?"

А что должно быть?

St. Father
21.11.2005, 12:48
в идеале что-то типа
ff // от "конструктора" :)
loaded // от аттача
---3sec---
loaded // от загрузки файла
nu?
---3sec---
loaded // от загрузки файла
nu?
...
// мож я туплю чего? объясните плиз.

St. Father
22.11.2005, 13:11
прошу прощения за флуд... тока тема давно висит... а тут еще и уползла в трэш...

Iv
22.11.2005, 14:08
я почти не понимаю вопрос, поэтому попытаюсь пальцем в небо:
что если добавить некий клип-пустышку в нужные мувики и
задать ему класс типа:

OnLoadCaller = function (){}
Object.registerClass("on_load_caller_mc", OnLoadCaller)
OnLoadCaller.prototype.__proto__=MovieClip.prototype
OnLoadCaller.prototype.onLoad = function () {
this._parent.onLoad = this.onParentOnLoad
this._parent.onLoad()
}
OnLoadCaller.prototype.onParentOnLoad = function () {
trace(this)
}

St. Father
22.11.2005, 14:39
мне нужно вызвать ф-ю при наступлении события onLoad класса MovieClip но не для всех экземпляров этого класса, а только для некоторых клипов.

MOHCTEP
22.11.2005, 20:38
мне нужно вызвать ф-ю при наступлении события onLoad класса MovieClip но не для всех экземпляров этого класса, а только для некоторых клипов.
фпопу МК лоадер!
Теперь и мне не ясно чего ж ты хочешь?
У меня при тесте простыми событиями "onLoad()" и "onData()" загрузка вообще не отследилась, даже, как ни странно, с моделью 5 Флеша та же проблема. MCL отработал идеально. Объясни, что тебе мешает подставлять просто ссылки на НУЖНЫЕ ТЕБЕ загружаемые клипы в общий загрузчик?

St. Father
23.11.2005, 08:51
1. МКЛоадер - способ нажить себе гемор. ( В МОЕМ СЛУЧАЕ )
2. Зачем на вопрос "Почему это не работает?" и подробном (ИМХО) описании проблемы, предлагать что-то. Неужто нет людей которые могут объяснить почему наследуемый onLoad не срабатывает при завершении loadMovie?
3. Всем, кто не понял чего я хочу подставить в коде, приведенном на 1й странице вместо:
//задаем онлоад функцию
ff.prototype.onLoad = function ()
вот это:
//задаем онлоад функцию
MovieClip.prototype.onLoad = function ()
А затем сохранить файлик куда-нить, сделать пустой файлик test.swf в этой же дире и перекомпилить файлик с кодом.
Ну и есессно сравнить результаты (Output Panel)

7thsky™
23.11.2005, 14:08
Вся проблема в том что если ты сделаешь

your_prototype = new Object ();
your_prototype.onLoad = function () {trace ('walla');}

var mc = this.createEmptyMovieClip ('loadTest', 1);
mc.__proto__ = your_prototype;
mc.loadMovie ('test'swf');

при окончании загрузки ты не получишь в оутпут walla, почему? потому что прототип измениться на дифолный при полной загрузки Мува то есть на MovieClip.prototype.

Поэтому надо использовать внешний прелоадер либо через в MovieClip.prototype.onLoad - прописать некий менеджер...

St. Father
23.11.2005, 14:15
Спасибо тебе, мил человек!
Именно это я и хотел услышать.