需要帮助清理代码 (AS 3.0)
Posted
技术标签:
【中文标题】需要帮助清理代码 (AS 3.0)【英文标题】:Need help cleaning up code (AS 3.0) 【发布时间】:2013-12-22 13:45:42 【问题描述】:我在让我的代码正常工作时遇到了一些问题。一般来说,我对编码很陌生,对此我已经碰壁了。播放动画时出现错误
(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)
【问题讨论】:
【参考方案1】:有几件事,当您调用“this.removeChild(s)”时,“this”指的是什么?我不懂法语,但在尝试移除孩子时,您似乎收到错误“不是调用者的孩子”。每当我收到该错误时,我都会添加一个 if 条件以确保我要移动的是 event.target 的子项。
【讨论】:
【参考方案2】:if(currentFrame == 321)
this.removeChild(s);
s 变量在 IF 的分支 true 中定义。所以当你进入 else BRANCH 时不会实例化
【讨论】:
【参考方案3】:您的var s:Sprite
声明应在if-conditional
之外。
在您的代码中,如果到达第 321 帧,它会尝试删除一个名为 s 的子节点,但您没有在循环执行中创建它,因为 if 括号被跳过了。
基本上是这样的:
function onEnter( e: Event ):void
var s: Snow = new Snow();
if (currentFrame <= 320)
//...
【讨论】:
以上是关于需要帮助清理代码 (AS 3.0)的主要内容,如果未能解决你的问题,请参考以下文章
Publish.net core 3.0 as FDE for win on linux