2012-02-10 42 views
1

当我写的代码:当我设置._visible场景背后会发生什么=假

var x:MovieClip = new MovieClip(); 
.... 
... 
x._visible = false; 

然后ActionScript中隐藏的影片剪辑。当我浏览到MovieClip类,然后发现_visible,仅仅是一个布尔值属性与其他proporties一起:

dynamic intrinsic class MovieClip 
{ 
     ....... 
    var _height:Number; 
    var _alpha:Number; 
    var _lockroot:Boolean; 
    var _visible:Boolean; 
     ....... 
} 

但如何闪光灯来操控它???当我只是在改变房产的价值时,这会如何改变这个可见性?我看不到任何事件正在发送或某些事情!

+0

'var _visible'它就像movieclip的参数,它不是隐藏movieclip的参数 – mgraph 2012-02-10 12:06:35

+0

不确定你在看什么类,但我不认为Flash的核心源代码可用。很可能这是一个仅用于代码完成的骨架类 - 它不会告诉你Flash在幕后做了什么。 _visible可能是一个可以做更多事情的getter/setter,或者像@package描述的简单属性。 – 2012-02-10 12:20:42

+0

'_visible'是私人会员。公共场所(名为'visible')是什么样的? – 2012-02-10 12:29:58

回答

1

visibleMovieClip的属性,仅在渲染帧时才会考虑。首先,运行时检查是否将movieClip添加到显示列表中,然后检查movieClip是否为visible。如果这两个属性均为true,则会渲染movieClip。没有与movieclip可见或不可见相关的事件。

+0

那么当我说_visible = false时它是如何得到降级的;我只是在这里更改属性 – Simsons 2012-02-10 12:25:07

+0

如果在第1帧中看到movieclip,它将被渲染。如果在第2帧中不可见,则不呈现。没有“无理”的东西。 – package 2012-02-10 12:52:19

+0

框架1本身如何在按钮按钮上切换可视性?现在最初可以看到MC,而当onPress发生时,它会将Frame1本身的可见性更改为false。所以,如果它不是“渲染”,那么什么? – Simsons 2012-02-13 04:18:08

1

幕后没有任何事情发生。

Flash呈现每一帧,所以如果一个对象在第一帧中可见,它就会被渲染。然后在下一帧中,将屏幕的变化区域粉刷并重新渲染。如果现在所述对象不可见,则它不被渲染。

注意:更改_visible会使对象无效,以便Flash知道某些内容在此处已更改,并且需要重新呈现它。

+2

这并非完全正确,flash会跟踪已更改的区域(请参阅[重绘区域](http://help.adobe.com/en_US/as3/mobile/WS948100b6829bd5a6-421a65ed127736eaa26-8000.html)),并且仅重绘它需要的部分。 – 2012-02-10 14:15:06

+0

你是对的!我的错 :) – 2012-02-11 06:42:17

相关问题