![]() |
Обращение к переменной подгружаемой swf-ки
1.)Объясните, пожалуйста, почему при загрузке в файл А файла Б, дети класса loadedClass Файла Б переименовываются? Конкретный пример. rect переименовывается в instance3.
Файл А. Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
не переименовывается там ничего.
Поле name дисплей объекта, и название переменной в классе не имеют ничего общего. Простой пример: Код AS3:
|
caseyryan, спасибо. Но почему тогда у меня не выходит обратиться к ребенку/переменной rect вот так sprite.rect ? Или это невозможно?
|
потому что тип данных Sprite. А у спрайта нет свойства rect.
То есть в этом случае надо писать не Код AS3:
Код AS3:
Советую почитать про интерфейсы. |
caseyryan, еще раз Огромное спасибо.
|
Idon'tKnow, на форуме принято для каждого вопроса создавать отдельную тему, и уж тем более неприемлемым является заголовок с перечислением вопросов. В данном случае вопрос по сути один: "Обращение к переменной подгружаемой swf-ки".
|
Zebestov, прошу прощения. Я просто думал это одна и та же проблема.
Продолжая тему, Вопрос: Код AS3:
[object loadedClass] ? P.S. Компилятор тоже выдает, что и было выше сказано... Access of possibly undefined property test through a reference with static type flash.display:Sprite. trace(sprite.test); |
Потому что трейс выдает то, что возвращает метод toString(). Поскольку Ваш "спрайт" на самом деле экземпляр класса loadedClass, его переопределенный toString() возвращает [object loadedClass]. Но сама переменная sprite имеет тип Sprite, у которого нет метода test(), о чем и сообщает компилятор. Он то не в курсе, что этот спрайт уже не совсем спрайт)))
|
Wolsh, благодарю! Пойду еще поковыраюсь))) :)
|
Как уже сказал caseyryan, чтобы обратиться к такому добавленному методу расширенного класса, Ваша загружающая свф должна знать этот класс. То есть импортировать его. А это, конечно же, не всегда оптимально и даже не всегда возможно (зачем, спрашивается, делать отдельную свф с классом, который итак имеется в главной свф, да?). Поэтому в таких случаях используют интерфейсы. Интерфейс это тип данных, так же как и класс. Но интерфейс не содержит сам код методов, то есть ничего не делает. Он только гарантирует, что методы с таким названием (с точной сигнатурой) у данного экземпляра точно есть. Интерфейс тоже придется импортировать и в главную свф, и в загружаемую. Но он практически ничего не весит, не привязан ни к какой графике и никак не может вмешиваться в работу программы, поскольку не содержит самих действий.
Попробуйте. Код AS3:
Код AS3:
Код AS3:
|
Wolsh, Огромнейшее Спасибо!!! :)
|
| Часовой пояс GMT +4, время: 10:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.