Adobe Flex Builder 3:无法向现有项目的任何类添加任何方法/函数?
我对 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());
有什么线索吗?
问候, 米歇尔
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您发布的类 CPhysicalScreen 不包含结束
}
您还可能需要将其包装在包裹中。
The class CPhysicalScreen that you posted does not contain a closing
}
Also you may have to wrap it in a package.
我找到了解决方案,感谢 @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 :-)