Просмотр полной версии : Не видит функции
Тафарель
01.07.2004, 12:02
Всем привет.
Скажем, есть мувик, со свей функцией.
к которой я обращаюсь так
mc.PushMe(mc);
И это работает. Затем я создаю его дубликат:
newObj = mc.duplicateMovieClip("newbox0",100);
И это работает. Я присваиаю ему новую координату, он там создаётся и появляется.
Но вот дальше
newObj.PushMe(newObj); не работает.
trace(newObj.PushMe(newObj)) выписывает "undefined",
тогда как trace(newObj) выписывает "_level0.newbox0", то-есть, объект существует.
В чём проблема, дорогие други? Не дайте помереть в неведении! Спасибо!
DeliMIter
01.07.2004, 12:08
Если ты пытаешься вызвать ф-цию сразу после дублирования - и не должно работать. Функция еще не определилась, т.е. сначала отрабатывает скрипт после дупликэйта, и только ПОТОМ начинается выполнение скрипта (и определение ф-ций) в первом кадре нового клипа. Варианты решения:
1 Ждать, пока не определится ф-ция.
2 Прописать ее в AS2 КЛАССЕ для этого клипа.
Тафарель
01.07.2004, 12:43
А можно поподробнее о втором пункте?
DeliMIter
01.07.2004, 13:22
Пишешь класс, расширяющий MovieClip в *.as файле, в линкейдже мувика его указываешь. В этом случае инициализация классовых ф-ций происходит при создании/дублировании клипа, т.е. ДО выполнения следующей после создающей/дублирующей команды. Вроде того, что у только что приаттаченного мувика есть gotoAndPlay, stop и другие методы класса.
Тафарель
01.07.2004, 14:56
Спасибо!
Тафарель
01.07.2004, 15:11
А где можно увидеть пример?
DeliMIter
01.07.2004, 16:13
Пример чего? Как писать классы? В хелпе по MX2004.
Nox Noctis
02.07.2004, 16:32
кстати, если не требуется дублировать клип, и хочется запихнуть функции внутрь, то можно сделать финт ушами
// написать в клипе
#initclip
// линк к самому клипу
var origin = _root.blablabla.something;
origin.f = function () { .. };
origin.p = "property";
#endinitclip
тогда тем что написано в первом кадре можно будет пользоваться сразу как только клип появился на сцене...
но это не подходит для случая когда нужно дублировать клип.
просто иногда удобно запихнуть все функции, которые нигде больше не нужны в один клип, не создавая классов и не заморачиваясь с тем когда там что отработает и станет доступно.
DeliMIter
02.07.2004, 22:04
Инитклип сакс.
Nox Noctis
03.07.2004, 00:58
Оригинал написал(а) DeliMIter
Инитклип сакс
где сакс - это индекс, отвечающий за порядок выполнения блока, в случае если в одном кадре должны проинициализироваться несколько таких блоков(в разных клипах)
да, ты прав, важное дополнение :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.