Adobe Flex Builder 3:无法向现有项目的任何类添加任何方法/函数?

发布于 2024-10-27 05:42:33 字数 3479 浏览 3 评论 0原文

我对 Adob​​e 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());

有什么线索吗?

问候, 米歇尔

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; }

...

I'm totally new to Adobe Flex Builder 3.
I've been assigned a fully functional project but when I want to add the simplest function to any class, I always got the same error :

Call to a possibly undefined method through a reference with static type

For example, in some random class there is a function defined like this :

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

If I try to define a new one like below :

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

And then I try to call both of them like this :

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

Any clue?

Regards,
Michel

PS: full code where I do the call :

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");
}

Start of class definition :

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; }

...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

放飞的风筝 2024-11-03 05:42:34

您发布的类 CPhysicalScreen 不包含结束 }
您还可能需要将其包装在包裹中。

The class CPhysicalScreen that you posted does not contain a closing }
Also you may have to wrap it in a package.

云雾 2024-11-03 05:42:34

我找到了解决方案,感谢 @jeremy.mooer 和 @frankhermes :-)

在项目属性:ActionScript 构建路径:库路径选项卡中。

已有项目库。

一个“lib”文件夹,其中包含一些 SWC 文件。这些 SWC 来自另一个需要的项目。

我添加了一个新项目(添加项目按钮),然后我选择了正在构建所需 swc 文件的项目。

现在,当我在这些其他项目中进行更改时,它们可用于我的主项目。

我认为当项目交给我时,这些就没有联系了......

感谢那些提供帮助的人:-)

I've found the solution, thanks to @jeremy.mooer and @frankhermes :-)

In project properties : ActionScript Build Path : Library path tab.

There were existing project librairies.

A "lib" folder with some swc files in it. Theses swc come from another project wich is needed.

I added a new project (Add project button), then I selected wich project were building needed swc files.

Now when I make changes in these other projects, they are made available to my main project.

I think these got unlinked when the project was given to me...

Thanks to people who helped :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文