首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量mC:mc =新mc立即添加mc?

变量mC:mc =新mc立即添加mc?
EN

Stack Overflow用户
提问于 2015-12-11 23:31:06
回答 3查看 72关注 0票数 0

我在这里是个莫名其妙的笨蛋。我有以下代码:

代码语言:javascript
复制
var mC:mc = new mc();

我做的是,而不是实例化mC,使用addChild(mC);

但是,在后面的代码中,我有一个使用onEnterFrame的循环,在这个循环中我有以下跟踪函数:

代码语言:javascript
复制
if(mC){
    trace("mC is here");
}

这将在输出窗口中返回"mC在这里“。嗯?

问题是,我想要使用这个'if‘语句到removeChild(mC);我将在代码中添加它,稍后使用addChild(mC);基于发生的某些事情,但它总是抛出“调用者的错误子”消息,即使在'if’条件下.

我做错了什么?我不知道声明变量会将它们添加到工作台/显示列表中,我认为您需要一个addChild();语句。我是不是抽了不该抽的东西?

提前感谢,~沮丧公司。

EN

回答 3

Stack Overflow用户

发布于 2015-12-11 23:42:13

当您新建一个对象时,它存在于内存中,即使您还没有将它添加到舞台上。这就是为什么当您检查mC是否存在时,它会返回true。你想看看它是否存在于舞台上。类似于:

代码语言:javascript
复制
var mc:MovieClip = new MovieClip();
mc.name = "test";
if (this.getChildByName("test") != null) {
  trace("mc is on stage");
}

我很久没有使用Flash了,所以我没有测试这段代码。希望它能成功。

票数 1
EN

Stack Overflow用户

发布于 2015-12-12 01:57:35

在代码中,只需控制变量是否为空。

您可以在要添加的显示对象上使用contains方法。

如果要将mC添加到某个名为sprite的容器中,则可以简单地检查它是否存在于该容器中:

代码语言:javascript
复制
if (!container.contains(mC))
     container.addChild(mC);

编辑:控制一个电影是否在舞台上的更安全的方法是控制它的舞台值。

代码语言:javascript
复制
if (mC.stage) {
     mC.parent.removeChild(mC); // this is how you remove, if you simply want to check existence, don't remove it
}

如果将电影添加到舞台或添加到舞台的容器,则必须具有舞台价值。

希望这样更清楚。

票数 1
EN

Stack Overflow用户

发布于 2015-12-12 04:01:58

AS3中的复杂对象(这意味着任何非字符串或数字)的默认值为null。WHen计算出默认值null等于false:

代码语言:javascript
复制
var mymc:MovieClip;//that MC is NOT instantiated yet so it has a default value of null
if(mymc)
{
    //mymc is null so this evaluates to false
    //and this statement DOES NOT execute

现在,当一个复杂对象被实例化并存在时,它的值现在将计算为true。

代码语言:javascript
复制
var mymc:MovieClip = new MovieClip();//that MC IS instantiated 
if(mymc)
{
    //mymc exits so this evaluates to true and this statement EXECUTE
    //notice that "!= null" is not necessary

现在,您的问题与显示列表有关。当没有将对象添加到显示列表时,DisplayObject具有一个为null的父属性,当该对象被添加到显示列表时,该属性指向父属性:

代码语言:javascript
复制
var mc:MovieClip = new MovieClip()
trace(mc.parent);//this is null
addChild(mc);
trace(mc.parent);//this is not null anymore and points to the parent

所以你的意思是:

代码语言:javascript
复制
if(mC.parent){//this means mC has a parent and can be removed from it
    trace("mC is here");        
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34234261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档