编辑:Cameron请求完整的违规功能:
function picSwitch(p=null)
{
if (picShown == true)
{
picx = 3072;
picy = 2304;
picTweens.removeChild(pic);
picShown = false;
}
else
{
var pic:image = new image();
pic.smoothing = true;
pic.width = 750;
pic.height = 560;
if (pic.scaleX < pic.scaleY)
{
pic.scaleY = pic.scaleX;
}
else
{
pic.scaleX = pic.scaleY;
}
picx = 1536 - (pic.width/2) + 64;
picy = 1152 - (pic.height/2) - 12;
picTweens.addChild(pic);
TweenLite.to(pic, 1, {x:picx, y:picy, rotation:4, ease:Quint.easeInOut});
picShown = true;
}
}
原帖: 哦,伙计,我简直不敢相信我已经花了几个小时来讨论这个问题......这个愚蠢的问题无疑已被多次提出过了......我事先向你道歉..
我在引用我创建的孩子时遇到了问题。
我的图书馆里有一个名为'image'的电影剪辑
我舞台上名为'picTweens'的容器影片剪辑(其实例名称相同)
并且在舞台的动作面板中我有一个包含
的功能var pic:image = new image();
pic.smoothing = true;
picTweens.addChild(pic);
一切都很好,它创造了我应该的电影剪辑。
现在在同一个函数的if语句中,我有
picTweens.removeChild(pic);
但是当if语句触发时,(并且我已经将我的图片加载到它应该的位置)
它告诉我:TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/removeChild()
我的语法错了吗?如果没有,那我应该检查什么?
答案 0 :(得分:2)
如此明显。当你想要移除孩子时, pic 变量根本不可用。你在“else”部分声明了它,并且它在某个函数中(我猜是按下按钮,或输入框架或任何其他事件)。因此,当函数被称为AGAIN时,这次将 picShown 设置为true, pic 变量不可用,并且它为空。
或者你实际上声明了函数的变量OUTSIDE,但在函数范围内使用“var”,它在本地被覆盖。
所以 - 确保在函数外面声明 pic 变量,这样你以后就可以访问句柄了:
var pic:image;
function picSwitch(...){
// etc.
}
另外 - 当你有这个时,不要重新声明函数中的 pic 变量,只使用一个简单的赋值(pic = blah;)。