文章标签 ‘flash’

下面这两个链接是我们找到的比较好的站锁方法。供参考:
AS3 域名锁定
AS3禁止flash在本地运行 (当然反过来只让flash在本地运行亦可)

2010年7月6日15:34 | 没有评论
分类: 其它

Box2D的碰撞检测实现起来虽然简单,但在需要检测大量碰撞的时候,所有需要在碰撞时触发的事件都要写到那一个继承自b2ContactListener的类中未免显得杂乱,不易管理,如果能把刚体的碰撞处理分开写到各自的UserData类中看起来就好多了。
下面是实现方法和部分代码:
Box2DFlash版本:2.1a
首先需要为刚体的UserData写一个基类,所有用于刚体的UserData继承自该类,注册类中的contactHandle虚拟函数,最终用来在各自的UserData类中处理碰撞。

2010年4月4日18:07 | 没有评论
分类: 技术

发现了一个使用SimpleButton和buttonMode导致stage键盘事件失效的’bug’。
希望是我使用不当,还望知情者指出问题。
情况描述
首先我对stage添加了按键监测,并将按键事件trace出来:

2010年3月22日01:40 | 2 条评论
分类: 其它

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

2010年2月22日23:13 | 1 条评论
分类: 技术
标签: , ,

以前我转载过一篇文章,说的是如何防止flash中的滚轮事件影响到整个页面。但是那个方法是通过在页面中插入一段js代码来实现的。
今天,我又看到一篇文章,它不是在页面上解决此问题,而是在flash内部解决的,这无疑更加方便了开发者。
请参考:
在SWF内滚动,而不是页面上。

2010年1月19日12:02 | 没有评论
分类: 技术
标签: , ,

全局变量、右键支持等…
地址:http://www.uza.lt/codex/

2010年1月13日14:44 | 没有评论
分类: 技术

来自SWFever:
Flash平台开发者技能树

2010年1月8日17:28 | 没有评论
分类: 技术
标签: , ,

近期的一个FB工程里面需要用到比较复杂的Flash CS3资源(就是MC套子MC,子MC又有很多帧,帧上又有很多MC的那种…)。而且在这些MC中,某些帧上是有代码的。
遇到两个问题:

Flash资源帧上的代码没有执行。
gotoAndStop之后无法马上得到目标帧上的元件。

原因与解决:

对于FB导入Flash资源,我一直使用的是[Embed (source="???.swf", symbol="???")]方法。其实这种方法适合导入静态资源(即不包含AS代码的资源),而不适合导入动态资源(包含AS代码)。后来通过使用SWC导入的方法解决了。
帧上的内容不经过渲染是得不到里面的内容的(比如MC),这是Flash Player长久以来的一个问题。一般gotoAndStop之后,经过一次渲染(也就是下一帧的时候)内容才可访问。但经过我的测试,好像也有隔一帧仍然无法访问的情况,还要再隔一帧(共两帧)才行。(另,据说FB4已经解决了此问题。)

参考文章:
关于导入Flash动态和静态资源到Flex

http://sujitreddyg.wordpress.com/2008/01/02/creating-and-importing-flash-assets-into-flex/
http://blogs.adobe.com/flexdoc/pdf/swf9.pdf
http://www.bit-101.com/blog/?p=853

关于Flash Player运行与渲染原理

http://www.craftymind.com/2008/04/18/updated-elastic-racetrack-for-flash-9-and-avm2/

2009年12月11日00:03 | 没有评论
分类: 技术