没有评论
在没遇到这个问题之前是用转轴把刚体固定在某一点,然后利用扭矩来实现刚体旋转,但使用转轴的问题在于,如果一个动态刚体掉落过程中撞到这个利用转轴转动的刚体时,这个刚体会发生微小的转动,虽然这属于正常的物理特性,但这对游戏体验还是影响不小的,在网上查遍了资料,试过N多种方法,搞了几天硬是没搞定这个问题,最终还是logos出马,虽然是改了Box2d的源文件,但总算是把问题解决了。
阅读全文…
这个问题其实有点莫名奇妙,之前“Alt+/”还用得好好的,在另一个机器上安装完后就不听使唤了,死活不弹出代码提示,后来通过设置快递键得到解决,看图。
先把 Word Completion 的快递键改为空。
Box2D的碰撞检测实现起来虽然简单,但在需要检测大量碰撞的时候,所有需要在碰撞时触发的事件都要写到那一个继承自b2ContactListener的类中未免显得杂乱,不易管理,如果能把刚体的碰撞处理分开写到各自的UserData类中看起来就好多了。
下面是实现方法和部分代码:
Box2DFlash版本:2.1a
首先需要为刚体的UserData写一个基类,所有用于刚体的UserData继承自该类,注册类中的contactHandle虚拟函数,最终用来在各自的UserData类中处理碰撞。
阅读全文…
1. 嵌入字体
[Embed(source="c:/windows/fonts/FREESCPT.TTF", fontName="Freestyle", unicodeRange="U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E")] public static var freestyle:Class; |
发现了一个使用SimpleButton和buttonMode导致stage键盘事件失效的’bug’。
希望是我使用不当,还望知情者指出问题。
情况描述
首先我对stage添加了按键监测,并将按键事件trace出来:
阅读全文…
1. 关于存储
- 使用适当的Display Object
- Shape – 没有交互(占内存少)
- Sprite – 有交互(占内存多)
- MovieClip – 有时间线(占内存更多)
- 尽可能重用对象,而不要重新创建
- 强制类型转换int(exp)要比Math.floor()和Math.ceil()快很多
- 使用对象池技术重用对象
- 释放内存 – 将所有对象的引用设置为null
- 尽可能重用BitmapData
- Callback要比event快而且消耗更少的内存
2. 减少CPU使用率
- 即便将一个Display Object从stage上移除了(removeChild)甚至是已经将它的引用设置为null,它依然有可能在消耗CPU。所以要在其移出display list时将其完全停下来(比如mc.stop())。
- 卸载从外部装载的内容时,使用loader.unloadAndStop(),而不要使用loader.unload()。
- 尽可能禁用鼠标交互。obj.mouseEnabled = false; obj.mouseChildren = false;
- Timer在某些情况下比ENTER_FRAME要好。
- 减少tweening的使用。
3. ActionScript性能
- 尽 可能使用Vector替代Array。固定长度的Vector更快。(Vector可以这样初始化:var coords:Vector.<Number> = Vector.<Number>([132, 20, 46, 254, 244, 100, 20, 98, 218, 254]);)
- 新的drawing API更快,它们是:drawPath, drawGraphicsData, drawTriangles。
- 使用setVector()方法来处理像素。
- 使用setPixel()和setPixel32方法时,要配合使用lock()和unlock()方法。
- 使用TextField时,appendText()方法比+=操作符要快。
- 尽可能在避免在循环内更新TextField。
- 尽可能少使用方括号操作符访问Vector或Array元素,可以利用一个临时变量来操作。
- 尽量将代码内嵌,避免过多的函数调用。(比如用 value > 0 ? value : -value; 来代替Math.abs())
- 代码量过大也会造成性能的降低。尽量少使用大型第三方库(Flex, TLF)。
- 避免在循环内使用evaluating statements(myArray.length)。用临时局部变量来操作。
- 更多优化技巧参考:http://www.rozengain.com/blog/2007/05/01/some-actionscript-30-optimizations/
4. 渲染性能
- 尽可能避免使用alpha参数。
- 适当的使用cacheAsBitmap可以大幅提高性能。(对于变化少的矢量元件)
- 针对每个子元件使用cacheAsBitmap而不是针对父元件使用。
- 使用TextLine处理静态文本比TextField快而且使用更少的内存。
- 使用cacheAsBitmap和opaqueBackground参数可以改进渲染性能(包含TextField)。

