【发布时间】:2015-10-09 23:02:13
【问题描述】:
我有这个单例,我用它作为全局变量和常量的包装器,但是当我创建一些 [Bindable] 时,我在控制台中启动时崩溃了/一堆红色文本。
TypeError:错误 #1009:无法访问空对象引用的属性或方法。
在 BrandGlobals$/get COLOUR_EVERYTHING_BACKGROUND()[C:\MyProject\src\BrandGlobals.as:14]
在 BrandGlobals$cinit()
在 global$init()[C:\MyProject\src\BrandGlobals.as:2]
在 _mainWatcherSetupUtil/setup()
在 main/initialize()[C:\MyProject\src\main.mxml:0]
在 mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::childAdded()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\经理\SystemManager.as:2131]
在 mx.managers::SystemManager/initializeTopLevelWindow()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:3400]
在 mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::docFrameHandler()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\经理\SystemManager.as:3223]
在 mx.managers::SystemManager/docFrameListener()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:3069]
全球品牌:
package {
public final class BrandGlobals {
[Bindable]public static var COLOUR_EVERYTHING_BACKGROUND:uint = 0xE010FF;
如果我删除 [Bindable] 并将 var 转换为 const 没有问题(除了无法在此文件之外设置变量的明显问题),但这不起作用。此外,让整个班级[Bindable] 而不是这个班级也行不通。当我将鼠标悬停在COLOUR_EVERYTHING_BACKGROUND 定义上时,它会显示“
我可能已经猜到这是因为它没有包,但我正在使用另一个类似的单例,它有 [Bindable] 变量并且似乎工作正常。
我从来没有得到那个[Bindable] twaddle。
我正在使用 Flex 3.5 SDK。
我在下面尝试了 Brian 的建议,但它给了我几乎相同的错误。我什至尝试过:
{
_COLOUR_EVERYTHING_BACKGROUND = 0xE010FF;
trace("Var set."); //Breakpoint here
bLoadedFerCryinOutLoud = true;
}
[Bindable]private static var _COLOUR_EVERYTHING_BACKGROUND:uint;
private static var bLoadedFerCryinOutLoud:Boolean = false;
public static function get COLOUR_EVERYTHING_BACKGROUND():uint {
trace("Returning EVERYTHING background");
if (bLoadedFerCryinOutLoud)
return _COLOUR_EVERYTHING_BACKGROUND;
else return 0xFFFFFF;
}
此外,如果我在 trace("Var set."); 处设置断点,Flash Builder 会抱怨无法中断,因为那里没有可执行代码。
我还注意到在set 期间发生此崩溃时显示的调用堆栈中,它似乎是设置_COLOUR_EVERYTHING_BACKGROUND 的调用堆栈。但唯一设置的地方是:
public static function SetBackground(oApp:UBIApplication):void {
_COLOUR_EVERYTHING_BACKGROUND = oApp.nBackgroundColour;
}
并且断点表明它永远不会被调用。
【问题讨论】:
-
运行时是否看到“Var set”跟踪?
-
不,但我想通了。
标签: actionscript-3 data-binding