我浏览了很多类似主题的帖子,但找不到解决方案,所以我发帖。
这是一个相对简单的 Flash 动画,带有来自组件的 slider (“betterslider”)。我最初是在 CS5 中制作的,不记得有过任何此类类型错误。但是当我尝试在 CS6 中编译时,出现错误。
正如我所说,脚本相对简单:
stop();
sliderBar.minimum = 1;
sliderBar.maximum = this.totalFrames;
sliderBar.liveDragging = true;
sliderBar.addEventListener(Event.CHANGE, moveAlong);
function moveAlong(evt:Event):void {
gotoAndStop(sliderBar.value);
}
this.addEventListener("enterFrame",onEnterFrame);
function onEnterFrame(e:Event) {
sliderBar.value = this.currentFrame;
}
sliderBar.set_thumb_size(30, 30);
PlayVid.addEventListener(MouseEvent.CLICK, playIt);
function playIt(event:MouseEvent):void
{
play();
}
PauseVid.addEventListener(MouseEvent.CLICK, pauseIt);
function pauseIt(event:MouseEvent):void
{
stop();
}
SWF 实际上在编译时似乎运行良好。但这个输出仍然令人不安:
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/drawBackground()
at fl.controls::BaseButton/draw()
at fl.core::UIComponent/drawNow()
at fl.controls::Slider/draw()
at fl.core::UIComponent/callLaterDispatcher()
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/drawBackground()
at fl.controls::BaseButton/draw()
at fl.core::UIComponent/callLaterDispatcher()
当我调试时,我得到了同样的错误,加上这条注释:“无法在此位置显示源代码。”
请注意,我使用的按钮(PlayVid 和 PauseVid)是自定义的。我假设“BaseButton”是指与 slider 集成(调用)的按钮组件?
正如你所知,我几乎是一个新手,欢迎任何建议!
最好的 J
最佳答案
这些函数(drawBackground、draw、drawNow)位于 fl.controls(或其他 fl)模块中。这个问题看起来像是构建组件时缺少 DisplayObject。
CS5 和 CS6 中的组件定义可能存在差异。因此,从库中删除组件(以及所有相关资源),重新添加 slider (CS6 版本)并重新换肤(如果需要)就可以了。
这应该可行,但我想知道是否有人知道跟踪 fl 模块的方法? (也许与问题无关,但这可以缩小到底发生了什么变化的范围)
关于actionscript-3 - 类型错误 #2007 Flash Prof CS6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20435498/