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

搜索
查看: 4006|回复: 13
上一主题 下一主题

[悬赏 ≤ 99 银子] 求助一个困惑了很久的问题

[复制链接] TA的其它主题
发表于 2020-6-11 13:40:17 | 显示全部楼层 |阅读模式
80银子
一直以来都不知道这个问题是那方面的,所以无法自己百度解决,举个例子。


库里有连接名为test的元件,这个元件里有个变量num
然后把这个元件添加到舞台
[Actionscript3] 纯文本查看 复制代码
var mc:test = new test()
addChild(mc);
trace(mc.num)
//输出NaN

估计是元件还没完成初始化,所以我都是延时1秒再处理,这方法太笨太low了,又不规范。
想请教下有什么方法可以监听完成,就像加载外部图片那样,或者其他更好的方法。




最佳答案

查看完整内容

var mc = new test() mc.addEventListener(Event.ACTIVATE,function(e){ trace(mc.num) }) ACTIVATE 常量 public static const ACTIVATE:String = "activate" 语言版本: ActionScript 3.0 运行时版本: AIR 1.0, Flash Player 9, Flash Lite 4 ACTIVATE 常量定义 activate 事件对象的 type 属性的值。 注意:此事件既不具有“捕获阶段”也不具有“冒泡阶段”,这意味着必须直接将事件侦听器添加到任何潜在的目标,而无论目 ...
发表于 2020-6-11 13:40:18 | 显示全部楼层

var mc = new test()
mc.addEventListener(Event.ACTIVATE,function(e){
        trace(mc.num)  
})

ACTIVATE        常量
public static const ACTIVATE:String = "activate"
语言版本:         ActionScript 3.0
运行时版本:         AIR 1.0, Flash Player 9, Flash Lite 4
ACTIVATE 常量定义 activate 事件对象的 type 属性的值。

注意:此事件既不具有“捕获阶段”也不具有“冒泡阶段”,这意味着必须直接将事件侦听器添加到任何潜在的目标,而无论目标是否位于显示列表中。

AIR for TV 设备从不自动调度此事件。 但是您可以手动调度。
回复

使用道具 举报

发表于 2020-6-11 15:59:37 | 显示全部楼层
这个问题不算难,我知道,就是执行顺序不对而已。
把那段代码放在第二帧,元件里的代码放在第一帧就正常了。
方法应该有好几种的,我也正在学习中。(虽然AS3的前途渺茫
回复

使用道具 举报

 楼主| 发表于 2020-6-11 20:35:51 | 显示全部楼层
过年-日赚千刀 发表于 2020-6-11 17:26
var mc = new test()
mc.addEventListener(Event.ACTIVATE,function(e){
        trace(mc.num)  

终于解决了多年的困惑,谢谢
回复

使用道具 举报

 楼主| 发表于 2020-6-11 20:41:19 | 显示全部楼层
跟帖侠 发表于 2020-6-11 15:59
这个问题不算难,我知道,就是执行顺序不对而已。
把那段代码放在第二帧,元件里的代码放在第一帧就正常了 ...

感谢分享,你这个方法也不错,但应该也是属于取巧
回复

使用道具 举报

 楼主| 发表于 2020-6-11 21:58:21 | 显示全部楼层
@过年-日赚千刀 大神,为什么变量可以,调用函数就不行了,怎样才能调用函数?
回复

使用道具 举报

发表于 2020-6-11 23:40:09 | 显示全部楼层
勤奋的蜗牛 发表于 2020-6-11 21:58
@过年-日赚千刀 大神,为什么变量可以,调用函数就不行了,怎样才能调用函数? ...

可以调用函数啊,亲测!
回复

使用道具 举报

 楼主| 发表于 2020-6-12 01:45:08 | 显示全部楼层
过年-日赚千刀 发表于 2020-6-11 23:40
可以调用函数啊,亲测!

的确可以,我函数的问题,感谢指教
回复

使用道具 举报

发表于 2020-6-12 09:09:26 | 显示全部楼层
理论上,时间轴的代码应该尽量不和外部交互使用,因为时间轴的代码属于局部代码,作用范围是根据时间轴位置来决定的。
回复

使用道具 举报

 楼主| 发表于 2020-6-12 23:54:13 | 显示全部楼层
TKCB 发表于 2020-6-12 09:09
理论上,时间轴的代码应该尽量不和外部交互使用,因为时间轴的代码属于局部代码,作用范围是根据时间轴位置 ...

我是业余爱好者,AS2就接触了FLASH,一直保持着时间轴写代码的习惯,AS3时代有想过学习用类写,但想想自己又不靠这个吃饭,只是平时捣鼓些小玩意,就不浪费那时间了,反正类能实现的时间轴也能。
我之前是把所有代码都写在场景第一帧,但过段时间再打开发现好乱,有些几千行代码堆在一帧上,看的头都大了,那怕有注释都很费事,所以我现在是那个元件要实现什么功能就在元件里写,需要全局调用的才在场景写,其实想想类不就是这个原理吗?
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /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)



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