生命游戏-报错汇总

研究生命游戏有两天了,我更愿意把我写的程序当作一个工具去探索这个…好好玩好好玩的数学游戏!

接下去打算建造一个实验室,目前建成的只有三根滚动条和两个游戏手柄还有一个彩屏,错误倒是有一箩筐了,顺手记下来留给以后参考吧。


以下报错按照时间顺序(差不多也是难易顺序):


循环变量忘记使用var关键字定义;循环变量定义重复;
误将二维数组的Vector.写成Vector.;
var c:Cell = new Cell(); cellGroup[i].push(c); 和cellGroup[i].push(new Cell()); 两种写法不等价,第二种写法会出现强制类型转换失败的错误;
定义一个10*10的cellGroup,由于和11*11的status数组大小不一致,复制代码时索引越界;
误将displayObject的alpha最大值认作100,AS2.0里为100,AS3.0里为1;
调用Timer函数忘记传入参数timerEvent;
cellGroup和status状态在初始化时不匹配导致changeSta执行后状态仍然不匹配;
status和preSta状态不匹配导致细胞全部死亡;
执行2个间隔相等的Timer会有微弱的时间前后,当时间复杂度高时尤为明显,此时最好合并两个timer的执行语句;  
width和height是系统保留字,可能指舞台的宽和高,不能用作全局变量名;
currentFrame是属性不是函数,误写后报错“value不是函数”;
在文档类里调用非代码放置在舞台的滚动条,语句应为this.slide1;
不能使用getChildByName(name),因为返回的类型是滚动条类的父类,不具有滚动条的属性,如value;
滚动条组件的maximum为1、value带小数时,滚动条无法移动。max、min、value、interval变量类型可能只能为整数;
由于给整个舞台安装了侦听器,导致鼠标单击任何位置都会导致initialize()被调用,且无法分辨具体是单击的是哪一个按钮。
应为每个DisplayObject分别添加侦听器。
定义全局变量n为每边细胞数目,在通过this.slide1.value获取n时顺手赋值给var新定义的局部变量n;
DisplayObject类不可以被实例化,Sprite可以;
ArgumentError: Error #2025: 提供的 DisplayObject 必须是调用者的子级;
单个cell边长过大时,手柄失灵。原因是,在应有cell的周围多定义了一圈的cell,方便了status的计算,但是忽略了alpha为0的DisplayObject覆盖在手柄的位置会使手柄得不到mouseEvent。解决方法是,去除最右方一列cell的影片剪辑,既不影响计算又不妨碍手柄接收mouseEvent;
更新滚动条的侦听器,使用的Event不能是mouseEvent里的任何一种,而是Event.CHANGE,需import flash.events.*;
currentFrame是只读属性。

评论区

  1. 冰淇淋定制 2015年7月6日 回复

    路过看看

发表评论

电子邮件地址不会被公开。 必填项已用*标注