2010-11-28 102 views
0

编辑:卡梅伦要求的全额违规功能:AS3:快速关于儿童和引用它们的问题

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; 
} 
} 

原贴: 哦,我无法相信我已经花了几个小时在这一个..这样一个愚蠢的问题,这无疑已经被问了很多次才..我提前向你们道歉所有..

我在引用我创建了一个孩子的问题。

我有我的库中影片剪辑所谓的“形象”

一个名为“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

您能否整体发布违规函数? – Cameron 2010-11-28 17:25:44

+0

使用完全犯罪功能进行编辑。 – Partack 2010-11-28 17:36:54

回答

2

很明显。 图片变量根本不可用,当您要删除孩子。你在“else”部分声明了它,并且它在某个函数中(我猜测它是在按下按钮,输入框架或任何其他事件时调用的)。因此,当函数被再次调用,这一次picShown设置为true,则PIC变量是不可用的,它是零。

如果不是这样,你是真正的声明函数的变量之外,但与“无功”的功能范围内,它是本地覆盖。

所以 - 确保申报PIC变量函数外,这样你就可以访问后手柄:

var pic:image; 
function picSwitch(...){ 
    // etc. 
} 

而且 - 当你的是,不要重新声明PIC变量INSIDE函数,只使用一个简单的赋值(pic = blah;)。