Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не работает класс, расширяющий Array (http://www.flasher.ru/forum/showthread.php?t=215138)

Appleman 28.02.2018 18:39

Не работает класс, расширяющий Array
 
Друзья, подскажите плиз, проблема с использованием класса, расширяющего Array.
Объявлен вот так:

Код AS3:

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

он динамический
Код AS3:

public dynamic class ActionLog extends Array
        {
                public function ActionLog(...rest) 
                {
                        super(rest);
                }


Appleman 01.03.2018 00:51

caseyryan, большое спасибо. Не сталкивался пока с динамическими классами. Всё получилось, только один вопрос смущает. Сразу после объявления
Код AS3:

private var _actionLog: ActionLog = new ActionLog();

у меня в этом массиве появляется одна запись-пустышка в нулевой позиции. С какого перепугу?

caseyryan 01.03.2018 06:01

Это мой косяк. В super() ничего нельзя передавать в этом случае.
Код AS3:

super(rest); // ошибочно

потому что этот аргумент передается как массив (этот массив и будет первым элементом), а передать vararg в as3 нельзя.
Поэтому единственный вариант здесь - вообще ничего не передавать в конструктор суперкласса, а вместо этого использовать методы push / unshift для того, чтобы заполнять свой массив

Appleman 01.03.2018 09:50

Угу, я сам уже методом тыка допёр. Спасибо большое. Вчера полдня убил на этот чёртов Array. :)


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

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