Как получить доступ к динамическому тексту в символе MovieClip из внешнего класса? - PullRequest
1 голос
/ 17 февраля 2009

Я использую Flash CS3 и ActionScript 2. У меня есть символ MovieClip (обозначенный как «MySymbol»), который содержит динамический текстовый блок с идентификатором «innerText». Символ помечен как «Экспорт для ActionScript» с использованием следующего файла «MySymbol.as»:

class MySymbol extends MovieClip
{
        function SetText(text)
        {
                innerText.text = text;
        }
}

В кадре действия я попытался сделать следующее:

var symInst = _root.attachMovie("MySymbol", "MySymbol" + _root.getNextHighestDepth(), _root.getNextHighestDepth());
symInst.SetText("hi");  // Fails
symInst.innerText.text = "hi";  // Works

Я получаю ошибку компиляции:

There is no property with the name 'innerText'.

Почему я могу получить доступ к innerText из действий с фреймом, но не ссылаться на него в самом файле .as?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2009

Вы получаете ошибку компилятора, потому что «innerText» недоступен классу во время компиляции (т.е. он доступен в время выполнения ).

Быстрое решение заключается в использовании

this['innerText'].text = text;

вместо

innerText.text = text;
1 голос
/ 18 февраля 2009

Я предполагаю, что TextField «innerText» был создан с помощью инструмента «Текст» во Flash CS3. Если это так, то компилятор знает об этом в некоторой степени, потому что ему нужно взять информацию из файла .FLA о том, какие элементы ему нужно создать на сцене, или какие символы нужно разместить в библиотеке.

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

Попробуйте изменить ваш класс следующим образом:

class MySymbol extends MovieClip

{

    private var innerText:TextField;

    function SetText(text)
    {
            innerText.text = text;
    }

}

Добавив объявление для innerText в классе, компилятор будет точно знать, что он ищет, и при условии, что свойство существует, как это было бы с этим ['innerText']. (Хотя это все еще допустимый способ доступа к этому свойству.

...