PDA

Просмотр полной версии : Функция как метод в нарисованном клипе


dark256
31.10.2008, 15:13
Второй день ломаю голову!
Есть клип, условно говоря "кружочек". Нарисованный прямо на поле.
Открываю его, создаю второй лэер и на нем пишу скрипт:

var STRT = new function ()
{
trace("StartFunc");
}

Выхожу из редактирования и обзываю клип в свойствах - TRY.

На осн. временной шкале, то есть из _root пишу скрипт:
TRY.STRT();

Функция не срабатывает.
При перечислении ее свойств и методов for-in там также пусто.

Хочу затолкать функцию именно в такой вот рисованный клип, и по мере необходимости типа вызывать встроенную в него функцию-метод работы этого клипа. Не выходит никак :))))
Долго муторно читал про конструкторы, инициализаторы, прототипы и т.п. ниччо не понял, горюю :) Подскажите...

Добавлено через 1 минуту
Соотв если прицепить к нему метод с root - то прокатывает. Но мне надо именно внутри иметь функцию... Ведь можно ж это как-то.....

iNils
31.10.2008, 15:26
#initclip
function STRT () {
trace ("StartFunc");
}
#endinitclip

и вызвать просто STRT();

dark256
31.10.2008, 15:31
Да! Но предполагается что таких клипов аттачится штук 100, внутри у него собссно процедура запуска таймера. И часики. Клип лежит себе лежит, и тут мне внутри него надо включить каунтдаун. К примеру. Вызываю функцию и он там начинает тикать и все показывать :)

Соотв обращения хочется иметь вида this["TRY"+i].STRT();

#initclip - это ж вроде из флеша-6 или что-то еще более древнее?

Добавлено через 2 минуты
Хочется чтобы фнкция стала МЕТОДОМ клипа... во....

INK•
31.10.2008, 16:10
Хочется чтобы фнкция стала МЕТОДОМ клипа... во....


MovieClip.prototype.start = function(){
trace("start"+this._name)
}

my_mc1.start()



стала

dark256
31.10.2008, 16:17
Внутри клипа прописываю твой код :)
клип на руте называется TM

TM.start() - трэйс не запускается.

for ( var tt in TM) { trace(tt)}; - в клипе методов так и нет.

Глянь исходник плиз :)

MrXoT
31.10.2008, 17:30
в клипе пишешь который аттачишь (имя линка будет "qw")


#initclip
sd = function(){
trace("true")
this.func2 = function(){
trace("true2");
}
}

sd.prototype = new MovieClip();
Object.registerClass("qw", sd);
#endinitclip


а вызов простой

attachMovie("qw", "qw", 1);
qw.sd();
qw.func2();

dark256
31.10.2008, 17:56
Угу.... Но при этом sd - отрабатывает при аттаче клипа, и в методах клипа не появляется. Фунс2 - является методом и нормально отрабатывает при вызове... Это так и должно быть или это следствие поставленной мной идиётской задачи? :)))
По крайней мере теперь хоть ясно куда копать :)
В целом - работает! Огр. спасибо за вот это: registerClass !!!