最近的Flash学习笔记:
* 碰撞检测:AS3中有MoveClip.hitTestObject()方法。优点是方便,缺点是这是个矩形碰撞检测,你懂的。这个方法也可以检测一个对象是否碰到一个点。
* 从数组尾端进行遍历:是游戏程序中一个非常有用的技巧,尤其是你要移除数组中的元素时,如果你从数组的前面开始遍历,那么循环很可能出现错误,因为数组的长度会随着你移除它的元素而改变。 --《flash游戏编程指南》
* 建立游戏循环:第一个方法是Event.ENTER_FRAME事件循环,根据swf文件设置的帧频进行循环;第二个方法是Timer类实现,循环速度是通过毫秒为单位的延时参数来控制。
* AS3的Tween类,在动画运行时总是遇到中途卡死。上网搜了一下,说要用变量保存tween对象,否则跑到一半就被GC了。或者设为全局变量。
* AS3重载:没有提供语言级支持,但是有个关键字...(reset),指定函数将接受任意数目的用逗号分隔的参数。然后用arg.length及arg[0]做类似判断检查。
* 添加鼠标hover样式:网上的方法都不太方便,例如:元素外面再套一个Link对象。还是自己写一个类,用静态方法直接调用。如:obj.addEventListener(MouseEvent.MOUSE_OVER, MouseStyle.setStyleBtn);obj.addEventListener(MouseEvent.MOUSE_OUT, MouseStyle.setStyleArr);
* flixel - An open source game/making library。(http://t.cn/zOZ2gvE)适用于像素游戏及卷轴型游戏,更好显示大量移动对象,有方便的游戏保存功能、鼠标键盘事件处理类等。缺点是除了几个游戏Demo和手册(连例子都没有),相关文档太少,有问题查个资料都没有! -_-!!
* 场景切换可以使用Loader加载另外的swf文件。但自己测试在两个swf文件中切换时,使用stage就会出错。暂时不知道原因。
* 如何让文字垂直居中。答案是,真没有什么很好的方法。一种方法是设置multiline,wordWrap为true,再根据height与textHeight的值重新设置定位。目前看不管是单行还是多行,都显示的还好。此方法只适用于文字位置显示,不适用有交互效果的地方。另外autoSize真是个奇怪的属性,多组合尝试吧。
* 在Flex中导入图片,添加属性:[Embed(source="pic.png")] protected var ImgPic:Class;然后就可以尽情发挥了,别忘了new之后要addChild。