![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
|
Здравствуйте!
Вот не могу понять такую вещь. Во FlashIDE для того чтобы узнать где я нахожусь (в каком объекте), например для трассирования я делал такую команду trace("This "+this); И мне показывался полный путь до текущего объекта. При компиляции через mtasc я тоже пытаюсь определить путь, например с помощью трассировки через flashout такой командой Flashout.info("This "+this); и где бы не дал эту команду, в логе получаю This [object Object] Что делаю не так, и как можно узнать путь до текущего объекта, в котором выполняется код? |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
this указывает на текущую область видимости, это может быть не только мувиклип, но и любой другой объект. В том же IDE можно получить [object Object]
В вашем случаи this вызывается не из мувиклипа. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Можно добавить, что trace() неявно вызывает метод toString():
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Да вполне явно он его вызывает.
toString() у MovieClip возвращает путь к клипу. Там же _target и targetPath. |
|
|||||
|
Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
|
Цитата:
class gamerender extends MovieClip
{
function gamerender () {
Flashout.info("Gamerender constructor, this "+this);
this.gameinit();
}
function gameinit()
{
Flashout.info("Gameinit start, this "+this);
}
}
В логе все так же имею Почему снова нет пути в this? Класс gamerender - это же теперь полноценный мувиклип. Еще вопрос - а почему вообще работает вызов this.gameinit()? По идее, если this не содержит путь к объекту, то как может вызваться его метод? Тут должна быть ошибка, а ее нет. Вообще, меня интересует, как писать классы - производные от MovieClip, чтобы в их коде можно было свободно пользоваться this, и this содержал осмысленное значение. Пожалуйста, дайте примерчик такого класса, и кода который делает инстанс этого класса в виде клипа. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Названия классов должны начинаться с прописной (заглавной) буквы, ни больше, ни меньше.
MovieClip не создается через конструктор, клипы с классом создаются через attachMovie. Так что был создан объект, но это не MovieClip. Про «если this не содержит путь к объекту, то как может вызваться его метод?» ничего не понял. з.Ы. Есть ещё методы создания клипа без создания мувика в библиотеке, например у меня для этого есть класс McFactory (можно найти на форуме). Но это не очень хорошее решение. |
|
|||||
|
Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
|
Цитата:
Подключение Gamerender теперь делаю так class Application
{
private var scopeRef:MovieClip;
function Application(scope:MovieClip)
{
scopeRef = scope;
var gamerenderinstance:Gamerender=new Gamerender();
scopeRef.attachMovie("gamerenderinstance","gamerenderins");
scopeRef.gamerenderins.printthis();
}
static function main()
{
var appinstance:Application = new Application(_root);
}
}
class Gamerender extends MovieClip
{
function Gamerender () {
Flashout.info("Gamerender constructor, this "+this);
this.gameinit();
}
function gameinit()
{
Flashout.info("Gameinit start, this "+this);
}
function printthis()
{
Flashout.info("Gamerender print this "+this);
}
}
Все это компилится без ошибок. Но! Судя по логу, вызова метода printthis() не происходит. Лог такой Gamerender constructor, this [object Object] Gameinit start, this [object Object] а "Gamerender print this ..." нету. То есть ничего с приаттаченыйм мувиком сделать не могу. Чего еще я не учел? Какой всеже правильный код подключения класса как мувика? PS: Да, приписал методу printthis ключевое слово public. Ничего не изменилось, он всеравно не вызывается. Последний раз редактировалось xintrea; 01.07.2007 в 02:53. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
OMG, купите уже книгу по AS2, господи…
Ещё раз: экземпляры-наследники MovieClip НЕ создаются оператором new, ВООБЩЕ. Вы ничего не поняли, совершенно. Откройте хелп, прочитайте про то, как прописывать класс и linkage для мувиклипа в библиотеке и как создавать экземпляры таких клипов. Ей богу. Если не сработал attachMovie, значит клипа с linkage равным gamerenderinstance в либе нет, либо на этот клип не прописан соответствующий класс. А строка с new вообще не рабочая. |
|
|||||
|
Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
|
Цитата:
Цитата:
Хочется просто кодом (без IDE, и без хаков) создавать классы наследователи мувиклипа. Пускай имея один (!) мувик в качестве заготовки. Но создавать классы в любом необходимом количестве. Это невозможно? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|