flash元件做运行时共享的问题

一直以来,我都会把美术资源做到运行时共享,今天发现一个问题,先看图:
flash元件做运行时共享的问题_第1张图片
 
这个酒馆.fla是发布成一个swc来做对应模块的导入资源,而发报时报的这个错时来自如下这个运行时共享资源:
flash元件做运行时共享的问题_第2张图片

这是一个莫名其妙的错误啊。。。按常理来说,该资源“关闭(ResCloseBtn)” 已经标示为运行时共享(前面有import),发布的时候不会引起这种编译时的错误的,下面时寻找排错方法来找问题原因。

我尝试把抛错的对象名去掉,再发布,没错了,方法如下:
flash元件做运行时共享的问题_第3张图片

可是我需要取得这个运行时共享的对象的引用啊。。。这个方法不可取。

google了一下,发现网上面一大堆同样的问题:
google 链接(点击我)

我都详细看了一下,没找到解决办法,但是发现他们都说不到点上,因为这个错误的出现还有一个条件,就是包含这个运行时共享的对象的影片剪辑是导出一个类给代码使用的,如下:
flash元件做运行时共享的问题 - SylarLin - 低调做人高调做事

这个”关闭(ResCloseBtn)“时包含在”酒馆面板“这个影片剪辑中,并且对外导出为”ResPubView“,如果不导出,则不会出现这个编译错误。

正当我一筹莫展的时候,忽然感觉这个错误很熟悉,以我平时在fb上面做rsl时,这个错误再常见不过了,一般是没有导入对应的library时出现的。

很快,问题就得到解决了。方法如下:

在发布设置 as3下拉框右边的扳手按钮面板中就加入如下的运行时共享库,并且设置成外部(External),这样刚才的编译错误就不再出现了,如下图:
flash元件做运行时共享的问题_第4张图片

细想一下,由于本fla也是主要发布成swc,导出到外部给代码控制使用,所以是需要通过编译器来编译,当这个运行时共享的原件赋值到一个变量时,这个变量的类型找不到,则抛出这个错误。
我们这个时候需要告诉编译器,这个运行时共享的元件时来自哪里的,并且资源时外部的,不需要编译到代码中(merge into code)。


问题是解决了,但是感觉还有一个问题,因为这个ui.swc这个库时填写绝对路径的,这样mac和windows甚至不同的pc不同的工作空间,这个fla如果需要修改,ui.swc岂不是要再导一次? 

此问题有待解决,当然由于是模块的资源,对应的责任应该时归对应的模块开发者管理,再不需要别人修改的情况下,问题不大。

你可能感兴趣的:(flash元件做运行时共享的问题)