gpt4 book ai didi

flash - DisplayObject 的可见属性

转载 作者:行者123 更新时间:2023-12-04 22:26:02 24 4
gpt4 key购买 nike

例如,我有一个电影剪辑的层次结构。 mc1 是 mc 的 child ,而 mc2 是 mc1 的 child 。
原来,当我设置

    mc1.visible = false;

mc2.visible 保持真实。

这是应该发生的吗?
是否有测试 mc2 可见性的快捷方式?

要玩的代码:
var mc = new Sprite();

mc.graphics.beginFill(0xFF0000);
mc.graphics.moveTo(50,50);
mc.graphics.lineTo(100,50);
mc.graphics.lineTo(100,100);
mc.graphics.lineTo(50,100);
mc.graphics.endFill();

var mc1 = new Sprite();
mc1.graphics.beginFill(0x00ff00);
mc1.graphics.moveTo(150,150);
mc1.graphics.lineTo(200,150);
mc1.graphics.lineTo(200,200);
mc1.graphics.lineTo(150,200);
mc1.graphics.endFill();
mc.addChild(mc1);

var mc2= new Sprite();
mc2.graphics.beginFill(0x0000ff);
mc2.graphics.moveTo(250,150);
mc2.graphics.lineTo(200,150);
mc2.graphics.lineTo(200,200);
mc2.graphics.lineTo(250,200);
mc2.graphics.endFill();
mc1.addChild(mc2);

stage.addChild(mc);

mc1.visible = false;

function myOnEnterFrame(e){
trace(mc2.hitTestPoint(mouseX, mouseY));
}

stage.addEventListener(Event.ENTER_FRAME, myOnEnterFrame);

结果:
mc2.visible 仍然是真的。
hitTest 仍会为 mc2 触发。

除了迭代父级之外,还有其他方法可以在舞台上测试 mc2 的存在吗?

最佳答案

如果父级的可见属性设置为 false ,则其所有子级都不会在舞台上可见。但这并不意味着子项的可见属性会自动设置为 false - 它们将继续保持其原始值。

简而言之,具有可见属性 DisplayObjecttrue 不需要在舞台上可见 - 它也取决于其父级的可见值。但是如果一个对象的可见设置为 false ,它无论如何都不可见。

编译下面的代码,点击文本框可以更好的理解。文本字段将变得不可见(因为它的父级的可见设置为 false ),但它自己的可见属性仍然是 true

private var sprite:Sprite;
private var tf:TextField;
public function init():void
{
sprite = new Sprite();
addChild(sprite);
tf = new TextField();
tf.text = "sometext";
sprite.addChild(tf);
sprite.addEventListener(MouseEvent.CLICK, onClick)
}
private function onClick(e:MouseEvent):void
{
sprite.visible = false;
trace(tf.visible);//traces true - but tf is not displayed.
}

更新以回答 cloz 关于如何检查对象是否可见的问题:
function isVisible(t:DisplayObject):Boolean
{
if(t.stage == null)
return false;
var p:DisplayObjectContainer = t.parent;
while(!(p is Stage))
{
if(!p.visible)
return false;
p = p.parent;
}
return true;
}

关于flash - DisplayObject 的可见属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1684549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com