Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 当提供实例名时,为什么movieclip或任何其他子组件可以公开访问?_Flash_Actionscript 3 - Fatal编程技术网

Flash 当提供实例名时,为什么movieclip或任何其他子组件可以公开访问?

Flash 当提供实例名时,为什么movieclip或任何其他子组件可以公开访问?,flash,actionscript-3,Flash,Actionscript 3,假设我把一个movieclip放在movieclip a_Mc(代表ClassA)中。现在,如果我放置另一个movieclip(没有命名,并确保通过flashide关闭自动实例命名),一切都会正常运行。但当我提供一个实例名(比如b_Mc)时,它必须能够公开访问 这种设置背后的逻辑是什么。为什么在设计时,我不能制作一个私密且他人无法访问的子电影剪辑?我觉得这只是为了简单起见。FlashIDE是面向设计师的,因此如果您开始谈论公共和私有,这可能会非常混乱 我想不出你为什么想要私人图片。我看不出访问所

假设我把一个movieclip放在movieclip a_Mc(代表ClassA)中。现在,如果我放置另一个movieclip(没有命名,并确保通过flashide关闭自动实例命名),一切都会正常运行。但当我提供一个实例名(比如b_Mc)时,它必须能够公开访问


这种设置背后的逻辑是什么。为什么在设计时,我不能制作一个私密且他人无法访问的子电影剪辑?

我觉得这只是为了简单起见。FlashIDE是面向设计师的,因此如果您开始谈论公共和私有,这可能会非常混乱


我想不出你为什么想要私人图片。我看不出访问所有子图形有什么不对。

AS3文档说明,舞台上放置的任何符号都是公共的。原因是无法从IDE时间线中将阶段实例声明为公共或私有。因此,允许公共或私人访问的唯一情况是使用公共。当然,你们所有的舞台成员都是公开的,这是有问题的

但从adobe的角度来看,他们正试图使Flash IDE对设计和动画用户友好,而对于这些用户来说,公共和私人成员的概念是陌生的。因此,它们不提供允许您将成员符号名称指定为私有的字段


但是一个好的解决方法是将图形作为一个类导出,没有实现,只有公共实例。然后将其作为私有变量添加到实现类中。然后将其添加到实现类的阶段(如果该类是显示对象)。如果您在StackOverflow上,我认为您可以迎接挑战;-)

Flash player无法将您的实例放入实例名称所指向的变量中,除非它是公共的。有关这方面的更多信息,请查看

如果它在显示堆栈上,那么它总是可以通过
getChildAt()
公开访问。