也有一段时间没有静下来写一些东西,最近比较忙碌,其他原因也是因为没有电脑的缘故,每天下班回去只能躺在床上睡觉。呵呵,今天难得有点时间,就想到写一点简单的东西。最近想到一个装备颜色过滤的东西,一直想不懂怎样过滤才好。最好查询一下API ,Array 数组有一个APi可以做到这些事情。过滤到相应的数组就能达到想要的效果了。
对数组中的每一项执行测试函数,并构造一个新数组,其中的所有项都对指定的函数返回 true。
下面做一个很简单实验测试:
import flash.events.*;
import flash.text.TextField;
var msg:TextField=new TextField();
addChild(msg);
msg.border=true;
msg.autoSize=TextFieldAutoSize.LEFT;
msg.x=300;
msg.selectable=false;
msg.mouseEnabled=false;
msg.y=100;
var resultMsg:TextField=new TextField();
addChild(resultMsg);
resultMsg.border=true;
resultMsg.width=150;
resultMsg.height=150;
resultMsg.x=100;
resultMsg.selectable=false;
resultMsg.mouseEnabled=false;
resultMsg.y=100;
//简单装备信息描述
var equipArray:Array = new Array();
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});
trace("武器列表:");
equipArray.forEach(traceEquipInfo);
function doFilter(element:*, index:int, arr:Array):Boolean
{
return (element.type==(type+1))==true;
}
function traceEquipInfo(element:*, index:int, arr:Array):void
{
resultMsg.appendText(element.name +"\n");
}
var colorArray:Array=["红色","蓝色","绿色","橙色","紫色"];
stage.addEventListener(MouseEvent.CLICK,onChnageColor);
var type:int;//颜色类型
function onChnageColor(event:MouseEvent):void
{
type=Math.random()*5;
trace(type);
msg.text=colorArray[type]+"类型:"+(type+1);
changeEquip();
}
function changeEquip():void
{
var managers:Array = equipArray.filter(doFilter);
resultMsg.text="";
managers.forEach(traceEquipInfo);
}
点击 之后 就可以看到过滤了。 过滤的规则很简单就是让装备类型 等于它即可。
return (element.type==(type+1))==true;
这样一个简单颜色过滤就可以过滤完成,这个只是一个很少的简单实验,相信后续改过会有不错的效果,这个只是很少的个人想法而已。希望之后可以深入这个过滤规则。
好,今晚就到这里了。