clo*_*orz 4 flash actionscript-3
例如,我有一个电影剪辑的层次结构.mc1是mc的子节点,mc2是mc1的子节点.事实证明,当我设置
mc1.visible = false;
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
结果:mc2.visible仍然是真的.hitTest仍会为mc2开火.
除了迭代父母之外,还有其他方法可以测试mc2在舞台上的存在吗?
如果将父级的visible属性设置为false,则在该阶段中不会显示其子级.但这并不意味着儿童的可见属性会自动设置为假 - 他们将继续保持其原始值.
简而言之,舞台上看不到DisplayObject具有可见属性的true东西 - 它也取决于其父母的可见价值.但是如果对象的可见性设置为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.
}
Run Code Online (Sandbox Code Playgroud)
更新回答关于如何检查对象是否可见的clorz问题:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10395 次 |
| 最近记录: |