Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 23.11.2002, 17:39
I@n вне форума Посмотреть профиль Отправить личное сообщение для I@n Найти все сообщения от I@n
  № 1  
I@n

Регистрация: Oct 2002
Адрес: Украина
Сообщений: 5
По умолчанию Определить класс мувиклипа

Как программно определить класс мувиклипа, т.е. название символа в библиотеке?

Например, мне надо зная класс одного мувиклипа из множества расположенных на сцене, заменить его на другой, соответствующий определенному классу.
P.S. По имени мувиклипа этого сделать в данном случае невозможно...

Старый 23.11.2002, 20:54
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 2  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
что значит "класс мувиклипа" ?

мувиклип принадлежит 'классу' отличному от класса MovieClip только если было действие Object.registerClass для линкейджа, установленного для этого клипа в библиотеке...

если речь идет именно о таких классах, то можно узнать о принадлежности объекта классу одним из вариантов:

(clip.__proto__ == Class.prototype)
(clip.constructor == Class)
(clip instanceof Class)



а название символа в библиотеке не узнать... никак.
только если вписать ручками переменную с названием символа в клип


Последний раз редактировалось Nox Noctis; 23.11.2002 в 20:56.
Старый 30.11.2002, 16:48
Hirn вне форума Посмотреть профиль Отправить личное сообщение для Hirn Посетить домашнюю страницу Hirn Найти все сообщения от Hirn
  № 3  
Hirn

Регистрация: Jan 2000
Адрес: BRD
Сообщений: 42
А это не подходит?
Код:
Object.oldRegisterClass = Object.registerClass;
Object.registeredSymbols = {};
ASSetPropFlags(Object, "registerClass", 0,7);
Object.registerClass = function(symbol, class) {
	this.registeredSymbols[symbol] = class.prototype;
	return this.oldRegisterClass(symbol, class);
};

Object.isSybolRegistered = function(symbol) {
	return this.registeredSymbols[symbol] != undefined;
};
ASSetPropFlags(Object, "registerClass,oldRegisterClass,registeredClasses,isSybolRegistered", 7);
ASSetPropFlags(Object, "registeredClasses", 1);
__________________
Дааа, не перевелись на Руси богатыри добры-молодцы!!?


Последний раз редактировалось Hirn; 30.11.2002 в 16:53.
Старый 30.11.2002, 17:47
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 4  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
это канеш круто, только похоже автор уже передумал =)
не подает признаков жизни...

и потом я что-то не вижу каким образом твой код помогает решить вопрос с определением класса (холтя мы по-прежнему не знаем что все-таки хотел узнать автор :)) )

ты записываешь в registeredSymbols какой линкейдж какому прототипу соответствует... не понятно - зачем ?..
у тебя на сцене есть клип, у которого в библиотеке есть линкейдж и для которого зарегистрирован класс...
как ты узнаешь линкейдж этого клипа чтобы подставить в registeredSymbols[symbol] и получить прототип ?


тогда уж все проще можно сделать -

клип.constructor - это ссылка на создавшую его функцию... то есть либо на функцю MovieClip, либо на функцию Какой_то_класс...
клип.__proto__ - это ссылка на Какой_то_класс.prototype ...

и не надо ничего городить дополнительно :)

но все равно не понятно зачем... =) если так уж нужно получить имя класса, то его можно вписать в прототип класса как рид-онли свойство и оно будет наследовано всеми объектами-представителями... чего тут еще придумывать-то ? :)


Последний раз редактировалось Nox Noctis; 30.11.2002 в 17:49.
Старый 30.11.2002, 18:11
I@n вне форума Посмотреть профиль Отправить личное сообщение для I@n Найти все сообщения от I@n
  № 5  
I@n

Регистрация: Oct 2002
Адрес: Украина
Сообщений: 5
Спасибо за ответы. Я вообще то нашел намного более простой путь в решении своей задачи чем определение класса, но почитать то что вы пишете интересно.
Извините за неопределенность вопроса - я лучше разбираюсь в Delphi & C++, чем во флеше, а там немного другая терминология, к которой я привык...
А хотел я определить name символа, который задается в New Symbol или же Identifier в Linkage для размешенного на Stage Instance'а

Старый 30.11.2002, 18:18
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 6  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
name символа, который задается в New Symbol
повторюсь - этого программно не узнать НИКАК :)
...то есть можно, конечно, сделать тупо - переменную в клипе, которая будет содержать это имя... но по-другому получить имя _в библиотеке_ не получится.

с линкейджем абсолютно то же самое.

так что нужно выкручиваться по-другому...
скажем, ввести определенную систему именования клдипов на сцене - чтобы, к примеру, инстанс нейм клипа содержал в себе эти сведения...

если это не удобно - то что-нибудь другое придумывать... вариантов масса :)

Создать новую тему   Часовой пояс GMT +4, время: 05:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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