Actionscript 3 AS3设置MovieClips的可见属性

Actionscript 3 AS3设置MovieClips的可见属性,actionscript-3,Actionscript 3,我可以每帧设置电影剪辑的“可见”属性吗?还是应该检查“可见”属性的当前状态以确定是否需要更新 将“visible”属性设置为相同的值是否便宜?请提供一个源代码。我确信有底层代码可以防止它被设置为Amy提到的相同值,但如果您想绝对确定,您可以这样做: if ( !mc.visible ) { mc.visible = true; } 如果设置为false,则执行相反的操作 if ( mc.visible ) { mc.visible = false; } 仅当该值尚未设置为该值

我可以每帧设置电影剪辑的“可见”属性吗?还是应该检查“可见”属性的当前状态以确定是否需要更新


将“visible”属性设置为相同的值是否便宜?请提供一个源代码。

我确信有底层代码可以防止它被设置为Amy提到的相同值,但如果您想绝对确定,您可以这样做:

if ( !mc.visible ) {
    mc.visible = true;
}
如果设置为false,则执行相反的操作

if ( mc.visible ) {
    mc.visible = false;
}
仅当该值尚未设置为该值时,才会更改该值。很明显,您希望确保它们永远不会相邻,因为您的组件总是以visible=false结尾。

这没关系

visible
属性只是一个设置的标志,然后在下次显示列表呈现时读取。更新其值实际上只需将用于绘制对象的内部特性设置为您提供的值。您可以在每一帧中多次修改
visible
的值,它将执行相同的操作

基本上,当Flash运行在您添加到DisplayList的所有DisplayObjects上时,它会检查每个对象的标志和值的集合,如
x
y
alpha
可见
。它使用这些值来确定如何绘制对象。当您使一个对象不可见时,真正发生的是Flash将跳过该对象而不尝试绘制它


为了保持整洁,我会坚持不使用
if

我相信如果更改与已设置的相同,则有底层代码会忽略更改,所以请删除。一些源代码会很好-我担心可能会有一些“脏标志”这是在设置可见属性时设置的。在纯Flash中,我不会担心这一点。我不相信这是Flash工程师使用的心智模型(Flex,绝对,担心)。我目前使用的是“if(mc.visible!=myValue)mc.visible=myValue;”@AmyBlankenship,确实如此,但它会阻止设置(在Marty Wallace发布答案之前,我不知道可视设置实际上是如何设置的),这就是史基夫提所问的。