Просмотр полной версии : Не работает класс, расширяющий Array
Appleman
28.02.2018, 18:39
Друзья, подскажите плиз, проблема с использованием класса, расширяющего Array.
Объявлен вот так:
public class ActionLog extends Array
{
public function ActionLog(...rest)
{
super();
}
На этапе компиляции всё нормально. Но при попытке любого использования выдаёт исключение: Error #1056: Cannot create property 0 on model.ActionLog.
Что я делаю не так? Спасибо.
caseyryan
28.02.2018, 19:53
он динамический
public dynamic class ActionLog extends Array
{
public function ActionLog(...rest)
{
super(rest);
}
Appleman
01.03.2018, 00:51
caseyryan, большое спасибо. Не сталкивался пока с динамическими классами. Всё получилось, только один вопрос смущает. Сразу после объявления
private var _actionLog: ActionLog = new ActionLog();
у меня в этом массиве появляется одна запись-пустышка в нулевой позиции. С какого перепугу?
caseyryan
01.03.2018, 06:01
Это мой косяк. В super() ничего нельзя передавать в этом случае.
super(rest); // ошибочно
потому что этот аргумент передается как массив (этот массив и будет первым элементом), а передать vararg в as3 нельзя.
Поэтому единственный вариант здесь - вообще ничего не передавать в конструктор суперкласса, а вместо этого использовать методы push / unshift для того, чтобы заполнять свой массив
Appleman
01.03.2018, 09:50
Угу, я сам уже методом тыка допёр. Спасибо большое. Вчера полдня убил на этот чёртов Array. :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.