Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как типизировать объект из загруженного swf? (http://www.flasher.ru/forum/showthread.php?t=121010)

Волгоградец 05.02.2009 10:52

Как типизировать объект из загруженного swf?
 
Привет. Суть: загрузил swf. В нем, помимо всего всего прочего, есть экземпляр класса, скажем, Square. Чтобы вызвать метод этого экземпляра я делаю следующее:
Код AS3:

var mainObj:Object = loader.content;//ссылка на главный класс загруженного swf.
var squareObject:Object = mainObj.getSquare;//получаю ссылку на нужный мне экземпляр.
squareObject.test();//ок - все работает.

Но меня смущает этот самый тип Object - хочется типизировать экземпляр.
Делаю так:
Код AS3:

import somePackage.Square;
var squareObject:Square = mainObj.getSquare;//ошибка - невозможно привести типы

Так тоже не выходит:
Код AS3:

var mainObj:Object = loader.content;
var tempObject:Object = mainObj.getSquare;
var s:String = getQualifiedClassName(tempObject);//тут нормально - somePackage::Square
var squareObject:Square = getDefinitionByName(s) as Square;//null

Можно вообще сделать то что я хочу?

kia007 05.02.2009 11:55

да, есть такая проблема...
Думаю помогут тут интерфейсы.
Хотя если в классе загруженной флэшки есть такая доступная константа:
Код AS3:

public static const MODE_CHAT:int = 1;

не понятно как о ней узнать. В интерфейсе насколько я знаю можно определить только методы и проперти.

†‡Paladin‡† 05.02.2009 12:00

Код AS3:

import somePackage.Square;
var squareObject:Square = mainObj.getSquare as Square

не канает?

Волгоградец 05.02.2009 12:06

Неа, не канает - не может привести тип Square@666666 к типу Square.

А с интерфейсом что-то не понял. Разве есть разница кастования к классу и интерфейсу?

G72RU 05.02.2009 12:12

А в загрузчике есть этот класс, Square ?

Волгоградец 05.02.2009 12:25

Почитайте повнимательнее первый пост - самый первый пример.

r_r_f_r 05.02.2009 12:35

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

Волгоградец 05.02.2009 13:01

Не понял, что значит "юзать полностью один класс"?

mre 05.02.2009 13:07

То, что файлы .as классов должны полностью совпадать.
Но это неудобно. Какой смысл подгрузки если у Вас и в загрузчике уже есть этот класс?
Нужно использовать интерфейсы, либо подгружать только графику.

etc 05.02.2009 13:08

Используйте интерфейсы.


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

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