作者ayuiop ((茶))
看板Flash
标题[问题] 引入的类别之事件的处理
时间Fri Aug 29 02:48:29 2008
例如说 我现在引入类别 C
File: C.as
package{
public class C{
public var v = 0;
public function C(){
...
this.an_obj_in_C.addEventListener(Event.Trigger, f() );
}
private function f(){
this.v = 1;
}
}
}
而 我在主程式test.fla中写道
var c:C = new C()
trace(c.v);
然後很快地 c.v因为事件在下指令後还未被触发 因此trace到的值都会是0
请问 如果我想要等到事件被触发後才去存取c.v的值
除了目前我想到的方法 就是去修改C类别的定义 把addEventListener的工作拔出来
放到test.fla
也就是把这些加到主程式中
c.an_obj_in_C.addEventListener(Event.Trigger, f());
function f(){ c.v = 1; }
但是 还有什麽方法可以不必动到太多类别的定义 也达到相同目的呢?
另外一个问题 如果我想在引入的类别的函式中
使用主程式的变数(呃 大概就是指MainTimeLine下的变数吧)
要怎麽写呢?
我有试过例如 trace(this.parent) 可是会显示undefined
还是说 这两个妄想 可能根本就违反了物件导向设计的原则呢?XD
谢谢各位m(__"__)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.194.146
1F:推 cjcat2266:是addEventListener(Event.Trigger, f); 08/29 10:33
2F:→ cjcat2266:还有其时我看不太出来你想要达到的目的耶 08/29 10:34
3F:→ cjcat2266:你想要这麽做,是想要有什麽具体上的应用吗? 08/29 10:35
4F:→ cjcat2266:至於为什麽你this.parent会是undefined 08/29 10:37
5F:→ cjcat2266:因为你这个class没有继承DisplayObject 08/29 10:37
6F:→ cjcat2266:没有parent这个property,而且没有被addChild 08/29 10:38
7F:→ cjcat2266:所以不管怎麽做,他都没有所谓的parent 08/29 10:38
8F:推 cjcat2266:然後就是,你这样并没有违反OOP的原则 08/29 10:40
9F:→ cjcat2266:只是...没有用到OOP的概念 08/29 10:41
10F:→ ayuiop:我遇到的问题是 类别C内已经定义了obj的事件处理函式,如果 08/29 12:47
11F:→ ayuiop:外面的主程式new个C出来时 希望立即能使用经由事件处理函式 08/29 12:48
12F:→ ayuiop:存取的c.v值 但是主程式new完後不会等事件被触发後才执行 08/29 12:49
13F:→ ayuiop:下一行,而是会在事件未触发 事件处理函式未运作前就存取 08/29 12:50
14F:→ ayuiop:c.v的值 导致错误。 我想问的是 是否我只能选择将事件处 08/29 12:52
15F:→ ayuiop:理函式拔出来写在主程式中 如此主程式就可以写到new完C後就 08/29 12:52
16F:→ ayuiop:结束,并将後续所希望进行的主程式过程全部再放到事件处理 08/29 12:54
17F:→ ayuiop:函式中? 也因为该函式是写在主程式中 才能使用一些主程式 08/29 12:56
18F:→ ayuiop:定义的全域变数 08/29 12:56
19F:→ ayuiop:不知道这样是否比较清楚@@ 我可以再把我的code PO上来 08/29 12:57
20F:推 cjcat2266:话说,不是没有Event.Trigger这个东西吗? 08/29 22:22
21F:→ cjcat2266:你想要用什麽样的事件呢? 08/29 22:22