Adobe Flex Builder 3: Не можете добавить какой-либо метод / функцию в какой-либо класс существующего проекта? - PullRequest
0 голосов
/ 28 марта 2011

Я совершенно новичок в Adobe Flex Builder 3. Мне был назначен полностью функциональный проект, но когда я хочу добавить простейшую функцию в любой класс, я всегда получаю одну и ту же ошибку:

Вызов возможно неопределенного метода через ссылку со статическим типом

Например, в некотором случайном классе есть функция, определенная так:

public function GetID() :String     { return m_strID; }

Если я попытаюсь определить новый, как показано ниже:

public function GetIDFoo() :String      { return m_strID; }

А потом я пытаюсь назвать их обоих так:

trace ("This line is ok : " + oPhysicalScreen.GetID());
trace ("This line gives me an error : " + oPhysicalScreen.GetIDFoo());

Любая подсказка?

С уважением, Michel

PS: полный код, где я делаю вызов:

public function UpdatePhysicalScreenData(oScreenNode:XML):void 
{
    if (m_vPhysicalScreens == null)
    {
        return;
    }

    var oScreenList:CMultyList = m_rBasicScreen.GetPhysicalScreensPanel().GetScreenList();

    var oPhysicalScreen:CPhysicalScreen = FindPhysicalScreen(oScreenNode.@id);

    if (oPhysicalScreen == null)
    {
        oPhysicalScreen = new CPhysicalScreen();
        {
            oPhysicalScreen.Initialize(oScreenNode.@id);
            oPhysicalScreen.SetInfo(oScreenNode.@info);

            var eList:uint = oScreenNode.@list;

            if (eList < SCREENS_LIST_TITLES.length)
            {
                oScreenList.SelectCurrentList(eList);
            }
            else
            {
                oScreenList.SelectCurrentList(2);//Test
            }
            var oNewEntry:CEntry = oScreenList.CreateEntryInCurrentList(oPhysicalScreen.GetID() + " " + oPhysicalScreen.GetInfo(), oPhysicalScreen);
            //var oNewEntry:CEntry = oScreenList.CreateEntryInCurrentList(oPhysicalScreen.GetDisplayName(), oPhysicalScreen);

            oNewEntry.ChangeTextColor(CPanelPhysicalScreens.STATE_COLORS[oPhysicalScreen.GetState()]);
        }

        m_vPhysicalScreens.AddAtEnd(oPhysicalScreen);
    } 

    if (oPhysicalScreen != null)
    {
        //should never be null but ...
        trace ("UpdatePhysicalScreenData : " + oPhysicalScreen.GetID() + " " + oPhysicalScreen.GetInfo() + " State : "+ oPhysicalScreen.GetState());
        trace ("UpdatePhysicalScreenData : " + oPhysicalScreen.GetIDFoo() + " " + oPhysicalScreen.GetInfo() + " State : "+ oPhysicalScreen.GetState());
    }
    oPhysicalScreen.SetDiffusionCode(oScreenNode.@diffusionCode);
    oPhysicalScreen.SetCurrentSequence((int)(oScreenNode.@currentSequence));
    oPhysicalScreen.SetIsAlive(oScreenNode.@alive == "true");
}

Начало определения класса:

public class CPhysicalScreen
{
public static var STATE_UNUSED          :uint = 0;
public static var STATE_SYNC            :uint = 1;
public static var STATE_UNSYNC          :uint = 2;
public static var STATE_KO              :uint = 3;

public static var STATE_MAX_WAIT_TIME   :uint = 5000;


private var m_strID             :String;
private var m_eState            :uint;
private var m_strInfo           :String;
private var m_strDiffusionCode  :String;
private var m_uiCurrentSequence :int;
private var m_bIsAlive          :Boolean;


public function CPhysicalScreen()
{
    super();

    m_strID             = null;
    m_eState            = STATE_UNUSED;
    m_strInfo           = "";
    m_strDiffusionCode  = "";
    m_uiCurrentSequence = 0;
    m_bIsAlive          = false;
}


public function GetID()                             :String     { return m_strID; }
public function GetIDFoo()                              :String     { return m_strID; }

...

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Я нашел решение благодаря @ jeremy.mooer и @frankhermes: -)

В свойствах проекта: путь сборки ActionScript: вкладка «Путь к библиотеке».

Существовали библиотеки проекта.

Папка "lib" с некоторыми SWC-файлами в ней. Тезисы SWC взяты из другого проекта, который необходим.

Я добавил новый проект (кнопка «Добавить проект»), затем я выбрал проект, который создавал необходимые SWC-файлы.

Теперь, когда я делаю изменения в этих других проектах, они становятся доступными для моего основного проекта.

Я думаю, что они не были связаны, когда проект был дан мне ...

Спасибо людям, которые помогли: -)

0 голосов
/ 29 марта 2011

Опубликованный вами класс CPhysicalScreen не содержит закрывающий }
Также вам может понадобиться завернуть его в пакет.

...