PDA

Просмотр полной версии : Использование неродного класса Vector


Condorcet
08.03.2012, 00:15
Всем привет!
Понадобились классы для работы с матрицами, векторами и пр.
Нашел две реализации:
http://code.google.com/p/as3matrix/
http://code.google.com/p/as3mathlib/

Но столкнулся со следующей проблемой: в обоих случаях реализация строится с использованием собственных классов Vector, однако класс с таким названием уже присутствует в top level (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Vector.html). Как грамотно обойти проблему и ссылаться именно на нужные классы Vector?

Wolsh
08.03.2012, 00:18
Прописать импорт?

dimarik
08.03.2012, 00:29
Варианты
- Если классов немного, переписать, добавив свой неймспейс.
- Библиотеку с as3matrix загружать в другой ApplicationDomain и пользоваться через getDefinition.
- Компилировать под версию плеера, в котором еще отсутствовал Vector

Wolsh
08.03.2012, 00:34
Жесть..
А такой финт тоже не пройдет?
static const Vec:Class = имяПакета.Vector;

MikroAcse
08.03.2012, 01:06
Согласен с Wolsh.
Можно и так:
public var Vec:com.имяПакета.utils.Vector=new Vector();

ChuwY
08.03.2012, 01:29
Не так. А вот так:
public var vec : com.имяПакета.utils.Vector = new com.имяПакета.utils.Vector();

MikroAcse
08.03.2012, 11:31
Аа, ну да.
Что-то вечером тупеть начинаю :)

Wolsh
08.03.2012, 11:55
А, он не статический))
И все же поправлю ChuwY)) "Имя пакета" по определению включает весь путь. И Vector тут навряд ли лежит в utils – речь о математическом векторе, не о массиве)
public var vec : имяПакета.Vector = new имяПакета.Vector();
К сожалению для инстансов не получится просто сохранить ссылку на класс, типизировать переменной нельзя, компилятору крышу сносит))

MikroAcse
08.03.2012, 12:15
Так это я про utils написал :)
Это так, просто для примера.

Condorcet
08.03.2012, 12:54
Т.е. во всех классах где используется класс Vector прописывать его полный идентификатор (включая пакет)?

ChuwY
08.03.2012, 19:31
Именно так.
Я бы переименовал.

MikroAcse
08.03.2012, 20:05
Я бы переименовал.
Согласен, так не придется прописывать полный путь каждый раз.

dimarik
08.03.2012, 21:02
Вы вообще смотрели на as3matrix? Там Vector объявлен как top-level. Налицо конфликт пространств имен и имен классов.