2013-05-08 83 views
1

我可以在每帧中设置影片剪辑的“可见”属性,还是应该检查“可见”属性的当前状态以决定是否需要更新?AS3设置影片剪辑的可见属性

是否将“可见”属性设置为相同的价格便宜?请提供来源。

+3

我相信如果它与已经设置的相同,底层代码将会忽略这个改变,所以请将自己击倒。 – 2013-05-08 14:29:39

+0

某些源代码会很好 - 我担心在设置可见属性时可能会设置一些“脏标志” – Schifty 2013-05-10 11:48:45

+0

我不担心纯Flash中的问题。我不相信这是Flash工程师使用的心理模型(Flex,绝对,担心)。 – 2013-05-10 16:12:35

回答

3

没关系。

visible属性是一个简单的设置标志,然后在下次DisplayList呈现时读取。除了将用于绘制对象的内部属性设置为您提供的值之外,更新其值实际上不会执行任何操作。您可以修改每帧多次的值visible,它将执行相同的操作。

基本上,当Flash运行在所有已添加到显示列表中的DisplayObject,它会检查标志和值,其各自都有,像xyalphavisible的集合。它使用这些值来确定如何绘制对象。当你使一个对象不可见时,所有真正发生的事情就是Flash会跳过该对象并且不会尝试绘制它。

整洁,我会坚持没有if

0

我相信有底层代码以防止它被设置为相同的值,如艾米提到的,但如果你想是绝对肯定的是,你可以这样做,而不是:

if (!mc.visible) { 
    mc.visible = true; 
} 

,做如果您将其设置为false,则相反。

if (mc.visible) { 
    mc.visible = false; 
} 

这只会改变值,如果它尚未设置为该值。你显然想要确保它们永远不会彼此相邻,因为你的组件总是以visible = false结尾。

+0

我目前使用“if(mc.visible!= myValue)mc.visible = myValue;” – Schifty 2013-05-10 11:46:32

+0

这使得您的代码不必要的复杂和冗长。 – 2013-05-10 16:13:22

+0

@AmyBlankenship它的确如此,但它会阻止设置的设置(我没有意识到在Marty Wallace发布他的答案之前实际设置的可见设置),这就是Schifty询问的内容。 – 2013-05-10 16:49:57