11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 3201|回复: 10
上一主题 下一主题

[已解决悬赏] Flash里面,不同的类不能使用相同的实例名吗?

[复制链接] TA的其它主题
发表于 2019-1-15 11:35:18 | 显示全部楼层 |阅读模式
70银子
在舞台创建两个按钮,一个是默认的SimpleButton类。另一个自定义MyButton类,基类是SimpleButton类。
微信截图_20190115112511.png

微信截图_20190115112641.png

把他们放到舞台上,第一帧放上默认的按钮类,实例名设置为btn1。
然后在第二帧放上自定义的MyButton类,实例名也设置成btn1,但运行之后编译器就会报错
场景 1, 图层'图层_1', 帧 1        警告: 实例名称 'btn1' 在类型为 flash.display.SimpleButton 的对象上声明,但是在类型为 MyButton 的对象上使用实例名称 'btn1' 有冲突。

看说明是因为不同类用了相同实例名引起的,这是为什么呢?有解决方案吗?
微信截图_20190115112229.png




最佳答案

查看完整内容

原理应该是类似T大说的,不过并非运行期间检测,而是在编译过程中检查舞台上所有元件(无论第几帧)是否有冲突,是否有调用未声明的对象等等。 我的理解是Flash会自动生成一个类,插入舞台上所有元件作为属性,并声明成对应类型。 所以并不是说两种元件就不可能用同一个命名了。只要在舞台上拥有这两种元件实例之前在代码中声明一下这个变量名称即可。 比如第一帧中声明: var testObj:*; 这样在舞台上放名称为testObj的影片剪辑 ...
发表于 2019-1-15 11:35:19 | 显示全部楼层
原理应该是类似T大说的,不过并非运行期间检测,而是在编译过程中检查舞台上所有元件(无论第几帧)是否有冲突,是否有调用未声明的对象等等。
我的理解是Flash会自动生成一个类,插入舞台上所有元件作为属性,并声明成对应类型。
所以并不是说两种元件就不可能用同一个命名了。只要在舞台上拥有这两种元件实例之前在代码中声明一下这个变量名称即可。

比如第一帧中声明:
var testObj:*;
这样在舞台上放名称为testObj的影片剪辑或按钮都不会报错,只有一个可以忽略的警告信息。因为已经自己声明过这个变量,元件与变量同名而且类型可以成功转换过来,就没问题了。
回复

使用道具 举报

发表于 2019-1-15 12:31:47 | 显示全部楼层
想看看标准答案!
个人认为不太可能,
因为如果名字一样,编译器怎么分辨呢?
回复

使用道具 举报

发表于 2019-1-15 20:04:34 | 显示全部楼层
会冲突的吧。
Flash Player运行到第一帧,时候发现一个btn1对象,它记录下来了。
到第二帧的时候,它会检测关键帧里面的对象,如果是相同命名,它就会觉得是之前记录的那个 btn1 对象。然后它会把第一个btn的属性赋给第二帧的 btn1,这时候如果不是一个对象,可能会出错的。

之所以这样,应该是因为机制的原因导致的。
Flash player 的运行机制是,后面帧上的对象后继承前面帧上的对象的属性状态。。

我想是这样的,具体需要自己实践~~
回复

使用道具 举报

发表于 2019-1-22 09:34:42 | 显示全部楼层
在同一个容器里,肯定不能,在不同的容器里是可以的
回复

使用道具 举报

发表于 2019-4-3 10:54:55 | 显示全部楼层
如果是不同的影片剪辑里是可以有同样的实例名,但是同一个容器内,是不能有同样的实例名的。
回复

使用道具 举报

发表于 2019-4-3 11:06:39 | 显示全部楼层
同一个影片剪辑里面肯定是不允许有2个同样的实例名的
回复

使用道具 举报

发表于 2019-4-3 19:19:07 | 显示全部楼层
向大神学习!
回复

使用道具 举报

 楼主| 发表于 2019-4-4 09:33:59 | 显示全部楼层
kofjjq 发表于 2019-4-3 11:06
同一个影片剪辑里面肯定是不允许有2个同样的实例名的

在不同帧内是可以有的,但是给元件添加了自定义类就会有编译器错误
回复

使用道具 举报

发表于 2019-4-12 09:33:52 | 显示全部楼层
在同一个fla 里面不能,在不一样的swc 或者swf 下能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表