2010年7月6日 | 标签: , , , , | 作者: logos

下面这两个链接是我们找到的比较好的站锁方法。供参考:

AS3 域名锁定

AS3禁止flash在本地运行 (当然反过来只让flash在本地运行亦可)

2010年4月23日 | 标签: , , | 作者: logos

你可能会像我一样看到标题后觉得不以为然,不就是个DEBUG版本吗?
其实事情不是那么简单滴,看了你就知道了:文章地址

使用这个方法,你就可以在DEBUG和RELEASE版本中使用不同的代码。

上面是Flash CS4中的方法,再补充个在flash builder中的使用方法:文章地址

2010年4月15日 | 标签: , | 作者: Bindiry

在没遇到这个问题之前是用转轴把刚体固定在某一点,然后利用扭矩来实现刚体旋转,但使用转轴的问题在于,如果一个动态刚体掉落过程中撞到这个利用转轴转动的刚体时,这个刚体会发生微小的转动,虽然这属于正常的物理特性,但这对游戏体验还是影响不小的,在网上查遍了资料,试过N多种方法,搞了几天硬是没搞定这个问题,最终还是logos出马,虽然是改了Box2d的源文件,但总算是把问题解决了。
阅读全文…

2010年4月7日 | 标签: , | 作者: Bindiry

这个问题其实有点莫名奇妙,之前“Alt+/”还用得好好的,在另一个机器上安装完后就不听使唤了,死活不弹出代码提示,后来通过设置快递键得到解决,看图。

先把 Word Completion 的快递键改为空。


阅读全文…

2010年4月4日 | 标签: , , | 作者: Bindiry

Box2D的碰撞检测实现起来虽然简单,但在需要检测大量碰撞的时候,所有需要在碰撞时触发的事件都要写到那一个继承自b2ContactListener的类中未免显得杂乱,不易管理,如果能把刚体的碰撞处理分开写到各自的UserData类中看起来就好多了。

下面是实现方法和部分代码:
Box2DFlash版本:2.1a
首先需要为刚体的UserData写一个基类,所有用于刚体的UserData继承自该类,注册类中的contactHandle虚拟函数,最终用来在各自的UserData类中处理碰撞。
阅读全文…

2010年3月26日 | 标签: , , , , | 作者: logos

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;

阅读全文…

2010年3月22日 | 标签: , , , , | 作者: logos

发现了一个使用SimpleButton和buttonMode导致stage键盘事件失效的’bug’。
希望是我使用不当,还望知情者指出问题。

情况描述

首先我对stage添加了按键监测,并将按键事件trace出来:
阅读全文…

2010年2月22日 | 标签: , , | 作者: logos

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)。