如何在AS3中引用swf中的元件、图片等资源以及布局信息
发布时间:2020-12-15 07:03:52 所属栏目:百科 来源:网络整理
导读:? ? ? ? ?凡是要被AS3引用的外部swf中的图片或者元件等资源都必须要在FLash编辑器中给它们一个“AS链接”,如: ? “AS链接”的实质就是相当于在新建元件时的“导出成ActionScript”选项,只是“AS链接”的方式比较方便快捷。在给定“AS链接”之后,相应的元
?
? ? ? ?凡是要被AS3引用的外部swf中的图片或者元件等资源都必须要在FLash编辑器中给它们一个“AS链接”,如:
“AS链接”的实质就是相当于在新建元件时的“导出成ActionScript”选项,只是“AS链接”的方式比较方便快捷。在给定“AS链接”之后,相应的元件或图片就会对应于一个类定义,如按钮继承SimpleButton类,影片剪辑继承MovieClip,图形继承Shape类,位图相当于BitmapData,而“AS链接”就会成为该类的名字。所以,在AS3中可以这样取得这些类定义:
? ? ? ?上面的只是示例,一般来说若不含元件,而仅仅是位图的话,行业内的做法一般都是直接用Loader从外部加载位图,而不会将它打包成swf,因为swf一加载就必须将整个加载进去,若位图资源多了的话,内存占用量会特别大,所以一般还是使用Loader从外部按需加载位图。
? ? ? ?唉?一个swf内保存着类的定义,而我从swf中取得一个类定义之后new了一个实例出来,加入到舞台的显示列表中,那么该实例的默认位置就是(0,0),而不是在FLash编辑器中元件摆放好的位置,那我用Flash做资源布局的的工作岂不是白费了吗?如何才能够获得元件的位置信息呢?
? ? ? ?这里我们需要弄清一些问题。在Flash编辑器的舞台上能够让我们看到的东西实际上就是已经存在了的库中元件的实例,而库中列出来的东西其实就相当于类定义。注意,库中的是类定义,舞台上显示的是类的实例。所以我们要获得的不是元件的类定义,而是已经存在在舞台上的元件实例,再获得实例的位置信息。
? ? ? ?虽然我们能够看到Flash编辑器舞台上的实例,但是swf保存的实际上只有定义,而不会单独保存一个实例,所以这里需要一个小技巧——将所有摆放好位置的元件再包装成一个新的复合的元件,也就是一个元件中还包含很多元件,复合元件可以保存子元件的位置信息。那么只要我们获取了这个复合元件的定义并new了出来,里面的子元件的布局信息自然就可以得到了。
? ? ? ?现在我要获得内部子元件,这又要怎么办呢?在上面的截图中,其实背包面板bag_panel就是一个复合元件,它其实就是其他元件组合起来的新元件,第一幅图片就是它的样子。比如我要获得bag_panel内的关闭按钮btn_close的实例,可以这么做:
? ? ? ?为背包面板中的关闭按钮实例取一个名字,可以看到他叫close_btn,在代码中就可以这样获取了:
? ? ? ?其实还有一种更美观的写法:
? ? ? ?这是利用了AS3中的关联数组的语法。我想复合元件的内部其实就是用Array的方式保存子元件的吧。
? ? ? ?要讲的内容到此结束,下面是乱七八糟堆码后的效果(有拖拽功能的,截图截不了鼠标,悲哀):
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |