作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] 请问如何用ComboBox控制内部元件?
时间Sun Apr 20 13:49:11 2008
※ 引述《kuwood (古)》之铭言:
: (我只知道function里应该会有
: on(press){_root.mc名.gotoAndPlay("要的那格影格");}
: 其他就不会了ˊˋ)
其实也不是用on(press)喔~
component 2.0用的event model不是一般AS2的handler model
而是跟AS3一样的listener model
listener model的特色如下:
(1)需要有一个function被定义出来,此为listener
(2)listener要去注册成一个物件的listener
(3)一个物件发生事件以後会丢出一个event object
(4)如果这个事件有listener注册(监听)的话
这个event object就会被当作唯一的参数传入listener
(所以listener定义的时候必须只有一个参数)
(5)接着这个listener就会启动
并且可以使用传入的event object身上带有的事件相关资讯
AS3和component 2.0的listener机制还使有一些差异
最主要的就是,AS3的listener可以直接去注册事件
component 2.0的话则是由一个Object物件去注册事件
此物件称为listener object
而listener object身上定义与事件同名的function就是监听事件的listener
好啦,说了这麽多
最後就来看看要达到你的效果的code吧:
//新增自订的label和其所对应的data值
box_cb.addItem({label:"frame 1", data:1});
box_cb.addItem({label:"frame 2", data:2});
box_cb.addItem({label:"frame 3", data:3});
//宣告listener object
var listenerObj:Object = new Object();
//定义listener object身上的listener
listenerObj.change = function(e:Object) {
//这边的效果你可以自己写
//ComboBox的event object有哪些可用的property
//请自行参考F1说明
//这边的target.selectedItem.data
//就是目前ComboBox显示的label对应的data值
mc.gotoAndStop(e.target.selectedItem.data);
};
//注册listenerObject为box_cb的listener object
//"change"代表ComboBox "label改变"的事件
box_cb.addEventListener("change", listenerObj);
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凯特 = 蜚蠊猫 = 蟑螂猫
Blog
http://cjcat.blogspot.com
Gallery
http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比闪光(Adobe Flash)研讨区
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.85.248
※ 编辑: cjcat2266 来自: 61.228.85.248 (04/20 13:51)
1F:推 kuwood:原来是用listener...原本完全没概念的说@@ 04/20 14:09
2F:→ kuwood:谢谢大大详细的教学 我学到了好多喔~感恩^^ 04/20 14:11
3F:推 GODSIZE:推用Listener 04/20 21:17