作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] FlashCS3 的 Action Script3.0 的问题
时间Sat May 3 13:08:01 2008
不知道要贴哪边的code的话,就贴原始档吧 :)
这种 "每个物件都要有不同的动作,而且没有规则性" 的状况
感觉可以用Dictionary来做
这样的话只要单一listener就可以解决你的问题
而不用写很多页零零散散的code
我先假设你的其他按钮条件是
按A以後 B C D E 都失效
按B以後 C D E 都失效
...以此类推
写code最好以简单管理为前提
还有要避免code的重复和以方便管理为目标
假设你的场景上面已经有 A B C D E 和 A1~A3 B1~B3.... 这些按钮了
那麽大致code应该会长这样(未经测试,可能有错字)
//按钮名称存成一个Array
var allButtons: Array = [A, B, C, D, E];
var showTargets: Dictionary = new Dictionary();
var disableTargets: Dictionary = new Dictionary();
//设定每个按钮对应到的小按钮群
showTargets[A] = [A1, A2, A3];
showTargets[B] = [B1, B2, B3];
showTargets[C] = [C1, C2, C3];
showTargets[D] = [D1, D2, D3];
showTargets[E] = [E1, E2, E3];
//设定每个按钮按下之後,失效的按钮
disableTargets[A] = [B, C, D, E];
disableTargets[B] = [ C, D, E];
disableTargets[C] = [ D, E];
disableTargets[D] = [ E];
disableTargets[E] = [ ]; //空的:p
//以上资料设定完毕之後,需要的listener只需要以下一个
//loop过所有的大按钮(A~E)
for (var j:int; j < allNames.length; j++) {
//隐藏小按钮
for each (bar i:* in showTargets[allButtons[j]]) {
i.visible = false;
}
//监听滑鼠按下
allButtons[j].addEventListener(MouseEvent.CLICK, listener);
}
//所有按钮统一使用的listener
function listener(e:MouseEvent):void {
//显示小按钮 (XX1~XX3)
for each (var i:* in showTargets[e.target]) {
i.visible = true;
}
//让某些按钮失效
for each (var j:* in disableTargets[e.target]) {
j.removeEventListener(MouseEvent.CLICK, listener);
}
}
--
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.216.58.206
※ 编辑: cjcat2266 来自: 61.216.58.206 (05/03 13:15)