Форум 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=60035)

Тафарель 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
Инитклип сакс
где сакс - это индекс, отвечающий за порядок выполнения блока, в случае если в одном кадре должны проинициализироваться несколько таких блоков(в разных клипах)

да, ты прав, важное дополнение :)


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

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