Flash AS3: Получение этой ошибки: Доступ к неопределенному свойству - необходима помощь по базовой области :(

Я все еще привык к стилю AS2 всего кода на 1 кадре, я пытаюсь кодировать AS3 в файлах классов, и у меня проблема с базовой настройкой пакета. Проблемы с областью действия убивают меня при попытке изучить AS3. Ниже приведен код моего пакета, у меня нет других файлов классов, я просто пытаюсь вернуть простую трассировку.

Ошибка, которую я получаю после запуска кода ниже: 1120: Доступ к неопределенному свойству tc.


Основной класс

package 
{
    import src.*;
    import flash.display.MovieClip;

    // Custom imports to go here
    import src.tradeclass.TradeFrame;   

    public class TraceClass extends MovieClip
    {
        public var tc:TradeFrame;

        public function TraceClass(traceText:String):void
        {
            // Constructor function
        }

    }

    tc = new TradeFrame("hello");
    //TraceClass.TradeFrame("hello");

}

Подкласс

package src.traceclass 
{
    import src.*;
    import flash.display.MovieClip;

    public class TradeFrame extends MovieClip
    {

        public function TradeFrame(traceText:String):void
        {
            // Constructor function
            trace(traceText);
        }
    }
}

person Leon Gaban    schedule 21.09.2009    source источник


Ответы (2)


Основной класс должен быть:

package src 
{

import flash.display.MovieClip;

// Custom imports to go here
import src.tradeclass.TradeFrame;       

public class TraceClass extends MovieClip
{
        public var tc:TradeFrame;

        public function TraceClass(traceText:String = "default text"):void
        {
                // Constructor function
              tc = new TradeFrame("hello");

        }

}

Подкласс должен быть:

package src.tradeclass {

import flash.display.MovieClip;

public class TradeFrame extends MovieClip
{

        public function TradeFrame(traceText:String):void
        {
                // Constructor function
                trace(traceText);
        }

}
person Preston    schedule 21.09.2009

Конструктора так не назовешь. Вам нужно будет сделать что-то вроде:

var tc = new TraceClass("hello");

РЕДАКТИРОВАТЬ: (после повторного чтения) Или попробуйте TraceClass.TraceClass("hello");

person Michael Todd    schedule 21.09.2009
comment
Привет, Майкл, спасибо за ответ ... Я пробовал оба способа (вар, о котором я забыл), но теперь я получаю 1061: вызов возможно неопределенного метода TraceClass через ссылку со статическим типом Class. - person Leon Gaban; 21.09.2009
comment
Я думаю, что одна из основных проблем заключается в том, что вы определяете класс в пакете, а затем пытаетесь протестировать этот класс в том же пакете, и я не думаю, что это возможно (хотя и не положительно ). Я бы попробовал настроить основной класс для тестирования, создать в нем новый экземпляр TraceClass, а затем попытаться протестировать его через «новый», а затем tc.TraceClass(hello);. - person Michael Todd; 21.09.2009
comment
Ах, вот и все, спасибо :) Я отредактирую свой код, как только он заработает. - person Leon Gaban; 21.09.2009
comment
Теперь я получаю 1120: доступ к неопределенному свойству tc :( Scope = my.pain - person Leon Gaban; 21.09.2009
comment
Ах, я получил это работает! удалил переменную из функции основного класса и переместил tc = new TradeFrame(hello); в основной класс, и теперь он работает. Спасибо за помощь... - person Leon Gaban; 21.09.2009