每天学一点flash(83) 数组中过滤 (2)
发布时间:2020-12-15 06:36:19 所属栏目:百科 来源:网络整理
导读:??? 难得一个周末,写一下自己的代码还是挺有意思的,很久或者最近无电脑缘故,还是很难去抽时间去写一下博客,积累一下每一天的心情和知识。csdn 改版之后,发现没有什么动作更新,刚刚写完之后又不能保存下来,害得我又重新记录,以前都可以现在却很难保存
??? 难得一个周末,写一下自己的代码还是挺有意思的,很久或者最近无电脑缘故,还是很难去抽时间去写一下博客,积累一下每一天的心情和知识。csdn 改版之后,发现没有什么动作更新,刚刚写完之后又不能保存下来,害得我又重新记录,以前都可以现在却很难保存写过的内容,稍稍感觉失望。前个时间去写一点小程序还是感觉很有意思。现在还好,可以抽点时间写一下也感觉到不错。 ? ???? 继续积累之前的过滤。先定义一个接口,用于过滤。定义不同类进行实现。 package { public interface IFilter { function doFilter(obj:Object):Boolean; } } 红色过滤 package { public class RedFilter implements IFilter { public function doFilter(obj:Object):Boolean { return obj.type==1; } } } 蓝色过滤 package { public class BlueFilter implements IFilter { public function doFilter(obj:Object):Boolean { return obj.type==2; } } } 绿色过滤 package { public class GreenFilter implements IFilter { public function doFilter(obj:Object):Boolean { return obj.type==3; } } } 橙色过滤 package { public class OrangeFilter implements IFilter { public function doFilter(obj:Object):Boolean { return obj.type==4; } } } 紫色过滤 package { public class PurpleFilter implements IFilter { public function doFilter(obj:Object):Boolean { return obj.type==5; } } } ? ? 写好一个接口,用于不同类实现这个接口,这样我们就可以调用接口来实现切换规则来过滤得到我们想要的数据结果。 ?例如我要得到红色 的装备,蓝色装备,等可以用这些规则来帅选。 ? 下面写一个小程序。程序很简单,创建几个简单文本交互按钮用于切换不同的规则。 ?
package { import flash.display.Sprite; import flash.text.*; import flash.events.*; public class Main extends Sprite { private var resultMsg:TextField; private var filter:IFilter;//过滤 private var filterArrary:Array; private var equipArray:Array = []; public function Main() { init(); } private function init():void { resultMsg=new TextField(); addChild(resultMsg); resultMsg.border = true; resultMsg.width = 162; resultMsg.height = 150; resultMsg.x = 260; resultMsg.selectable = false; resultMsg.mouseEnabled = false; resultMsg.y = 121; filterArrary=[new RedFilter(),new BlueFilter(),new GreenFilter(),new OrangeFilter(),new PurpleFilter()];//添加过滤规则 filter=filterArrary[0]; equipArray.push({name:"红色 金刚枪",type:1}); equipArray.push({name:"蓝色 雨土箭",type:2}); equipArray.push({name:"蓝色 羽毛扇",type:2}); equipArray.push({name:"绿色 星王剑",type:3}); equipArray.push({name:"蓝色 混天箭",type:2}); equipArray.push({name:"橙色 大神扇",type:4}); equipArray.push({name:"绿色 百合剑",type:3}); equipArray.push({name:"绿色 神速箭",type:3}); equipArray.push({name:"紫色 金刚扇",type:5}); equipArray.push({name:"紫色 顿王剑",type:5}); var newArray:Array=equipArray.filter(doFilters); newArray.forEach(traceEquipInfo); creatMenu(); } private function doFilters(element:*,index:int,arr:Array):Boolean { return filter.doFilter(element); } //创建菜单 private function creatMenu():void { var colorArray:Array = ["红色","蓝色","绿色","橙色","紫色"]; for (var i:int=0; i<5; i++) { var txtBtn:TextField=new TextField(); addChild(txtBtn); txtBtn.autoSize = TextFieldAutoSize.LEFT; txtBtn.htmlText = "<a href='event:" + i + "'>" + colorArray[i] + "</a>"; txtBtn.x = 260 + i * txtBtn.textWidth + i * 10; txtBtn.background = true; txtBtn.backgroundColor = 0x66666; txtBtn.border = true; txtBtn.textColor = 0xffffff; txtBtn.y = 100; txtBtn.selectable = false; txtBtn.addEventListener(TextEvent.LINK,onTextLink); } } private function onTextLink(event:TextEvent):void { filter = filterArrary[int(event.text)]; resultMsg.text=""; var newArray:Array=equipArray.filter(doFilters); newArray.forEach(traceEquipInfo); } private function traceEquipInfo(element:*,arr:Array):void { resultMsg.appendText(element.name +"n"); } } } 点击不同的标签会得到不同过滤规则。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |