使用 .stage 没有给出想要的结果

Posted

技术标签:

【中文标题】使用 .stage 没有给出想要的结果【英文标题】:Using .stage not giving desired result 【发布时间】:2017-08-25 00:50:26 【问题描述】:

我使一个全局变量等于一个movieclip

使用 if 语句运行函数,检查 [x] 影片剪辑是否存在,如果它不添加它。 尽管 MovieClip 在舞台上,但它继续使用 if 语句。

文档类

public static var skinHolder:MovieClip = new test;

单独的类(函数每帧运行)

    function animHandler():void
    
        if (! Game.skinHolder.stage)
        
            // if its not on the stage we add it to the stage
            addChild(Game.skinHolder);
        

    

【问题讨论】:

trace("check status : " + (Game.skinHolder.stage) ); if (! Game.skinHolder.stage) rest of code... 跟踪对状态说了什么?你需要一个结果所以尽量避免 EnterFrame 只是为了这个检查 ie: 只是//comment addEvent 行然后手动运行函数animHandler(); 检查状态:空 您正在将您的Game.skinHolder 添加到SeparateClass 实例。您确定您的 SpearateClass 实例首先添加到显示列表中吗?您的SpearateClass 也必须在舞台上,它的孩子才能进入舞台。 我的文档类添加了 SeperateClass 如果我的文档类没有添加到舞台,我该怎么做? 【参考方案1】:

添加影片剪辑后不会立即设置舞台,通常会发生在下一帧。

虽然检查对象是否存在是一种奇怪的方法,但您应该这样做:

private var mySkinHolder:MovieClip;

if (!mySkinHolder)

    // if it not exist we add it to the stage
    mySkinHolder = addChild(new test());

【讨论】:

存在我的意思是我想检查 MovieClip 是否在舞台上。如果不是,我们添加它。【参考方案2】:

我不完全了解您的结构,但要检查 DisplayObjectContainer(在您的情况下为 MovieClip)是否具有特定子级,您可以使用 contains() 方法。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#contains()

if (!contains(Game.skinHolder)) 
    addChild(Game.skinHolder);

【讨论】:

同样的问题。由于某种原因,Flash 认为这个变量不在舞台上,并不断添加它。 我认为可能是因为变量是全局的,但除此之外我不知道

以上是关于使用 .stage 没有给出想要的结果的主要内容,如果未能解决你的问题,请参考以下文章

Sql Inner 连接没有给出想要的结果

Hive 自动增量 UDF 没有给出想要的结果

我的随机森林分类算法没有给出我想要的结果

CoGroupByKey 没有给出想要的结果 Apache Beam(python)

RedShift to_char 格式没有给出想要的结果

在 laravel 中加入查询