我在使代码正常工作时遇到了一些问题。我对编码一般都很陌生,而且我对此有所了解。播放动画时出现错误
(TypeError: Error #2007: Le paramètre child ne doit pas être nul.
at flash.display::DisplayObjectContainer/removeChild()
at muis_fla::MainTimeline/onEnter()
知道为什么会这样吗?
this.addEventListener( Event.ENTER_FRAME, onEnter );
function onEnter( e: Event ):void {
if (currentFrame <= 320){
var s: Snow = new Snow();
s.x=550*Math.random();
s.y=0;
s.width=s.height=9+12*Math.random();// 1 ~ 9
s.xSpeed=-16+20*Math.random();// -2 ~ 2
s.ySpeed=16+20*Math.random();// 1 ~ 5
s.at = -0.001 -0.001*Math.random();
s.vt = 0;
this.addChild( s );
s.addEventListener( Event.ENTER_FRAME, onSnowEnter );
} else {
if(currentFrame == 321){
this.removeChild(s);
}
}
}
function onSnowEnter( e: Event ):void {
var s:Snow=e.currentTarget as Snow;
s.x+=s.xSpeed;
s.y+=s.ySpeed;
if (s.y>=0) {
}
答案 0 :(得分:0)
一些事情,当你打电话给“this.removeChild(s)”时,“this”指的是什么?我不读法语,但看起来你在尝试删除孩子时收到错误“不是打电话的孩子”。每当我收到错误时,我都会添加一个if条件,以确保我要移动的内容是event.target的子项。
答案 1 :(得分:0)
if(currentFrame == 321){
this.removeChild(s);
}
的变量在IF的分支中定义。所以当你进去时,BRANCH没有实例化
答案 2 :(得分:0)
您对var s:Sprite
的声明应在if-conditional
之外。
在你的代码中,如果到达第321帧,它会尝试删除名为s的子项,但是你没有在执行循环时创建它,因为if-括号被跳过了。
基本上,像这样:
function onEnter( e: Event ):void {
var s: Snow = new Snow();
if (currentFrame <= 320){
//...