存档

2008年9月 的存档

常用的flex 快捷键

2008年9月28日 评论已被关闭

Ctrl+Shift+L: 所有快捷键提示

Ctrl-F11: 执行(Run)
F11: 除错(Debug)
Ctrl-Alt-Down: 重复目前所在编辑列(Repeat current line )
Alt-Up: 移动本列,或选择列往上移动(Move line (or selection) up )
Alt-Down: 移动本列,或选择列下往移动(Move line (or selection) down )
Ctrl-Click: 移至定义区(Go to definition (also F3) )
Ctrl-D: 删除本列(Delete line )
Alt-/: 文字自动完成(Word completion (cycles through possible matches))
Ctrl-Up: 捲轴向上(Scroll up )
Ctrl-Down: 捲轴向下(Scroll Down )
Shift+F2    弹出帮助窗体,显示选中标签的上下文帮助
F1          在IDE内显示上下文帮助
F3          显示当前选中标签的类定义
CTRL+SHIFT+C  加注释
Ctrl+/:行注释
Ctrl + E  和 Ctrl +Tab  窗口之间切换

Ctrl+Shift+T:打开Class搜索框
Ctrl+Shift+R:打开资源搜索框
Ctrl+M:最大化/恢复当前编辑框

 

分类: 生活杂谈 标签: ,

(转)Using the Flex Builder 3.x Profiler

2008年9月26日 评论已被关闭

I’ve been getting lots of questions about memory leaks lately. I finally found some time to put my techniques for analyzing memory leaks into writing.

Instead of using PowerPoint, I actually created a SWF so you can use the SWF to both view the presentation and learn how to use the Profiler. I cover the differences between profiler memory, System.totalMemory and process memory and show how I analyze the two most common memory leak scenarios.

Run Presentation

As usual, caveats apply.

The SWF also demonstrates an approach to another topic I’ve heard about often, and that is how to do XML-driven or data-driven UI. The presentation in this SWF is controlled by an XML file. A single engine parses the XML and creates the UI widgets as dictated by the XML. To change the presentation, all I have to do is change the XML. I can also add new widgets easily. Source is available here:

Download FlexBuilder Project

The SWF also demonstrates a technique for improving startup time. Because our blog system is painful to use, I don’t like uploading more than one or two files per blog post, but this presentation had more than a dozen images. So, instead of loading images externally, I embedded them into the SWF, but normally, that delays startup by the download time of all of those images. To get around that, I pack all the images into frame 3 of the SWF so that Flex can get up and running while the images download at the end of the SWF. I can get away with that because the images are not needed right away.

Hope this helps.

分类: 生活杂谈 标签:

flash实现Base64编码与转码

2008年9月22日 评论已被关闭

flash实现Base64编码与转码

 

(转)Actionscript 优化指南

2008年9月9日 评论已被关闭

第一章  AS3的一些优化计算方法

  1. 用乘法来代替除法(当除数可转化为有限数的时候)。比如var n:Number = value * 0.5;要比var n:Number = value / 2;快。但差别并不是很大。只有在需要大量计算情况下,比如3D引擎中差别才比较明显。
  2. 用位运算代替除2或乘2。比如10>>1要比10*2快,而10<<1要比10*2快。从测试来看位运算几乎比乘除快一倍,但是一般情况下,我们不能选择位运算,比如我们就不能用13>>1来代替13/2,尽管前者比后者运算速度更快,但2者的运算结果却不一样。所以还是要看具体情况。
  3. 用unit()或int()代替取整运算Math.floor()和Math.ceil()。比如var test:uint = uint(1.5);要比var test:Number = Math.floor(1.5);快;而var test:uint = uint(1.5)+1;要比var test:Number = Math.ceil(1.5);也快。如果是Math.floor(),还可以用位运算(>>0)来代替。比如var test:uint =1.5>>0,比unit()或int()更快。
  4. 用乘-1来代替Math.abs()方法。比如var nn:Number = -23;var test:Number= nn < 0 ? nn * -1 : nn;要比var nn:Number = -23;var test:Number = Math.abs(nn);快。当然还有更多的优化计算的方法。一般来说,低级运算要比高级运算速度;内部方法比调用其他方法速度快。另外要注意的是,这些方法有的时候可能并一定适用。

第二章  Actionscript 优化指南

原著 Marco Lapi,alias Lapo, aw译

在这篇文章中,我们将讨论多种优化 Actionscript 代码的方法.此外我们也针对一些典型的游戏代码进行了系列测试,来最大限度的发掘、提高Flash播放器的性能。何时进行优化对现有程序进行优化的过程,有时十分的冗长与困难,这与原始代码的非优化程度有关,所以在投入大量时间进行代码优化之前,最重要的是要估计出要在什么地方对代码做出修改或替换。

一个游戏代码的最重要的部分就是主循环体,通常情况下该循环体要在flash的每一帧上执行,并控制游戏中的角色属性和重要的数据参数。而对于主循环体以外的部分,也可能是次要循环部分,同样要注意是给其否分配了过多的资源,而没有分配给那些更需要资源的核心部分。
通过积累在各处节约出来的时间(可能每处仅仅是几个毫秒),您会明显发现自己的swf运行得更加稳定,并且游戏感也大大加强。

简洁与高效的代码

书写出十分简洁、可以再次调用的代码(有时可能是面向对象的)是一项精细的工作,但这需要多年的编程经验。对于OOP(object oriented programming,面向对象的程序设计),有些场合根本利用不到它的优势,这使得它显得十分奢侈。在有限的资源条件下(可能是flash播放器的原因),通过更先进的方法,像刚刚提到的OOP,就可能反而导致令人不满意的结果。

我们并不是说OOP对游戏编程不好,只是在某些场合它显得过于奢侈和多余。毕竟有时候“传统的方法”却能得到更好的结果。大体而言,用OOP是比较好的,因为它让代码维护更加简单。但在后文中,你会看到有时为了充分发挥flashplayer性能,而不采用OOP技术。例如:处理快速滚动或者计算十分复杂的数学问题。基本的优化一提及代码优化,我们马上会联想到执行速度的改进,而很少去考虑系统资源的分配。这是因为当今,即使是将被淘汰的计算机,都有足够的内存来运行我们大部分的flash游戏(128M的内存足以满足大多数情况的需要,况且,512M的内存是当今新电脑的基本配置)

变量

在各种重要的代码优化手段中,有这么一条:在定义局部变量的时候,一定要用关键字var来定义,因为在Flash播放器中,局部变量的运行速度更快,而且在他们的作用域外是不耗占系统资源的。

aw附:var变量仅仅在花括号对中才有“生命”,个人认为没有系统学过编程的人容易出错的一个地方:

awMC.onLoad = function(){
  var aw = 1;
}
awMC.onEnterFrame = function(){
//不存在aw这个变量
}
一段非优化代码:
function doSomething()
{
mx = 100
my = 100
ar = new Array()

for (y=0; y < my; y++)
{
  for (x=0; x < mx; x++)
  {
   i = (y * mx) + x
   arr[i] = i  
  }
}
return arr
}

 

这段代码中,并未声明函数体内的那些变量(那些仅仅在函数内使用的变量)为局部变量,这使得这些变量被播放器调用的速度更慢,并且在函数执行完毕的时候仍然耗占系统资源。

下面列出的是经过改进的同样功能的代码:

function doSomething()
{
var mx = 100
var my = 100
var ar = new Array()

for (var y=0; y < my; y++)
{
  for (var x=0; x < mx; x++)
  {
   var i = (y * mx) + x
   arr[i] = i
  }
}
return arr
}

 

这样一来所有的变量均被定义为了局部变量,他们能够更快地被播放器调用。这一点在函数大量(10,000次)循环运行时显得尤为重要!当一个函数调用结束的时候,相应的局部变量都会被销毁,并且释放出他们占有的系统资源。

onEnterFrame 事件

onEnterFrame事件对于游戏开发者而言是非常有用的,它使得我们能够快速、反复地按照预设帧频(fps)运行一段程序。回想在Flash5的时代,这(onEnterFrame实时监控)是一种非常流行的技术,用这样的事件来控制机器游戏对手的逻辑,又或者我们可以在每一个子弹上设置这样的事件来监测子弹的碰撞。

实际上,我们并不推荐给过多的MoveClip添加这样的事件,因为这样做会导致“无头绪码(spaghetti code)”的出现,并且容易导致程序效率明显降低。

大多数情况下,用单独一个onEnterFrame事件就可以解决问题了:用这一个主循环来执行你所需要的操作。

另一个简单的办法是设置一个合适的帧频:要知道帧频越高,CPU资源就越紧张。在帧频为25-35(fps)之间时,onEnterFrame足以很好地执行较复杂代码,哪怕你的计算机配置较低。因此,在没有特殊要求的场合,我们不推荐使用高于60(fps)的帧频。

矢量图与位图

在处理图形前,我们一定要做出正确的选择。Flash能对矢量图和位图进行完美的兼容,然而矢量图和位图在播放器中的表现实质却完全不同。在用到矢量图的时候,我们要尽可能简化它们的形状,去除多余的端点。这样做将大大降低播放器用于呈现矢量图所要进行的计算量。另一个重要方面在于线条的运用,尽量减少和避免冗陈的线条结构,因为它们会直接影响到flash的播放效率。

当某个实例透明度小于100时,也会对播放速率造成影响,所以如果你发现自己的Flash播放速率过慢,就去挑出这些透明的实例来吧!

那么,如果真的需要呈现比较复杂的场景时,你就最好考虑使用位图实现。虽然Flash在对位图的渲染效率上并不是最优越的(比如和Flash的“兄长”Director比起来),但丰富的视觉内容呈现只能靠位图(与位图同复杂度的矢量图形渲染速率非常低)了,这也是很多基于区块的游戏中广泛采用像素图作为背景的原因。顺便要提到的是,Flash虽然对GIF,JPG和PNG都有所支持,但是渲染速度上PNG还是占有绝对优势,所

以我们建议flash中的位图都尽可能采用PNG格式。

影片剪辑(MovieClip)的可视性[下面将MovieClip简称为mc]

您可能会经常碰到这样一种情况:有大量不可见/屏幕外的mc等待出场(比如游戏中屏幕外的地图、人物等等)。
要知道,播放器仍然要消耗一定的资源来处理这些不可见/屏幕外的mc,哪怕他们是单帧,非播放的状态。

最好的解决办法之一是给这些mc一个空白帧,当他们不出现在屏幕上时,你能用gotoAndStop()语句跳转到这一帧,从而减少播放器对资源的需求。

请务必记住,这种情况下,简单的设置可见度属性为不可见( _visible = false )是无效的,播放器将继续按照这些mc所停留或播放的帧的复杂度来分配资源。

数组

数组在各种需要记录数据的应用程序和游戏中都被广泛的使用。

一个典型的例子就是基于区块的Flash游戏,在这样一类的游戏中,地图有时被存放成形如arr[y][x]的二维数组。虽然这是一种很常见的方法,但是如果用一维数组的话,却能提高程序的运行效率。另一个重要的方法来提高数组效率是在数组遍历的时候使用for in 循环来代替传统的 for 或者while循环语法。

例如:

一段代码如下

for (var i in arr)
{
if (arr[i] > 50)
{
  // 进行某些操作
}
}

它的执行速度明显高于这一段代码:

for (var i=0; i < 10000; i++)
{
if (arr[i] > 50)
{
  // 进行某些操作
}
}

前者的效率比后者提高了30%,这个数字在你的游戏要逐帧执行这一段代码的时候显得更加宝贵!

高级优化

1) for循环 和 while循环
用while循环将会得到比for循环更好的效率。然而,从数组中读取数据,用for in循环式最好的选择!

所以我们不推荐使用:

for (var i=0; i < 1000; i++)
{
//进行某些操作
}而推荐使用
var i=-1
while (++i < 1000)
{
//进行某些操作
}

2) 从数组中读取数据
我们通过测试发现,for in循环的效率大大高于其他的循环方式。参看:

arr = []
MAX = 5000
//数组赋值
for (i=0; i < MAX; i++)
{
arr[i] = i
}
var item = null
// For 循环
for (var i=0; i < MAX; i++)
{
item = arr[i]
}
// For 循环
for (var i in arr)
{
item = arr[i]
}
// While 循环
i = -1
while(++i < MAX)
{
item = arr[i]
}

3) 向数组中写入数据(while , for)可以看到while循环稍占优势。

4) _global(全局)变量同Timeline(时间轴)变量
我们猜测采用全局变量能提高变量调用速度,然而效果并不像预计的那样明显。

5) 单行、多行变量赋值
我们发现单行变量赋值效率大大高于多行。比如:

a = 0
b = 0
c = 0
d = 100
e = 100

效率就不如:

a = b = c = 0
d = e = 100

6) 变量名寻址
这个测试反映了变量名的预寻址是非常重要的,尤其是在循环的时候,一定要先给丁一个指向。这样大大节约了寻址时间。

比如:

var num = null
t = getTimer()
for (var i=0; i < MAX; i++)
{
num = Math.floor(MAX) – Math.ceil(MAX)
}
t1.text = “Always lookup: ” + (getTimer() – t)

就不如:

t = getTimer()
var floor = Math.floor
var ceil  = Math.ceil
for (var i=0; i < MAX; i++)
{
num = floor(MAX) – ceil(MAX)
}

7) 短变量名和长变量名
变量名越短,效率越高。考虑到长变量名也有它的好处(比如,便于维护等),因此建议在关键部位(比如大量循环出现的时候)使用短变量名,最好就1-2个字符。

8) 循环前、后声明变量
在测试前,我们认为循环前声明变量会更加节约时间,不料测试结果并不明显,甚至还恰恰相反!

// 内部声明
t = getTimer()
for (var i=0; i < MAX; i++)
{
var test1 = i
}
t1.text = “Inside:” + (getTimer() – t)
// 外部声明
t = getTimer()
var test2
for (var i=0; i < MAX; i++)
{
test2 = i
}

9) 使用嵌套的if结构
当用到复杂的条件表达式时。把他们打散成为嵌套的独立判断结构是最佳方案。下面的代码我们进行了测试,发现这种效果改进明显!

MAX = 20000
a = 1
b = 2
c = -3
d = 4
var i=MAX
while(–i > -1)
{
if (a == 1 && b == 2 && c == 3 && d == 4)
{
  var k = d * c * b * a
}
}
//下面的判断更加节省时间
var i=MAX
while(–i > -1)
{
if (a == 1)
{
  if (b == 2)
  {
   if (c == 3)
   {
    if (d == 4)
    {
     var k = d * c * b * a
    }
   }
  }
}
}

10) 寻找局部变量(this方法同with方法比较)
局部变量的定位方法很多。我们发现用with比用this更加有优势!

obj = {}
obj.a = 1
obj.b = 2
obj.c = 3
obj.d = 4
obj.e = 5
obj.f = 6
obj.g = 7
obj.h = 8
obj.test1 = useThis
obj.test2 = useWith
MAX = 10000
function useThis()
{
var i = MAX
while(–i > -1)
{
  this.a = 1
  this.b = 2
  this.c = 3
  this.d = 4
  this.e = 5
  this.f = 6
  this.g = 7
  this.h = 8
}
}
function useWith()
{
var i = MAX
while(–i > -1)
{
  with(this)
  {
   a = 1
   b = 2
   c = 3
   d = 4
   e = 5
   f = 6
   g = 7
   h = 8
  }
}
}

11) 循环监听键盘事件
同刚才所提到的寻址一样,我们实现给一个指向会得到更好的效率,比如:

keyDown = Key.isDown
keyLeft = Key.LEFT

//我们再用 if (keyDown(keyLeft))
附:我们测试了按键代码和键值常量的效率发现并无太大差别。

12) Math.floor()方法与int()
这个问题曾在Flashkit的论坛被提出讨论过。测试表明,旧的int方法反而效率更高。我们的测试结果也反映了这一点。

13)eval表达式与中括号语法
我们并没有发现明显的差别,并不像刚才所述那样,旧的eval表达式比起中括号方法并没有太大的优势
var mc = eval(“_root.myMc” + i)
var mc = _root["myMc" + i]
//两者效率差不多16) 涉及MC的循环:ASBroadcaster 同欢同循环的差别

结论

我们从这些测试结果中发现,对于不同的需求,采用不同的代码,我们可以大大提高脚本的执行效率。虽然我们在这里罗列了许多的优化代码的方法,需要大家自己测试、实验的还有很多(考虑到每个人的需求不同).如果你想更加深入地讨论这类问题。可以来我们的论坛。

aw附:
终于翻译完了,自己也学到很多好东西,大家又什么问题可以去gotoAndPlay的官方,也可以来我的Blog提出!

第三章  黑羽AS心得:浅释ActionScript的代码优化

本机函数要比用户定义的函数运行速度更快。本机函数即Flash中内有的一些函数(intrinsic),比如hitTest(),你没必要自己写一个类似的。

3.不要过多使用 Object 类型。
数据类型注释应力求精确,这样可以提高性能。只有在没有适当的备选数据类型时,才使用 Object 类型。同时也便于代码管理,时刻知道对象的类型和作用。同时也有利于编译器编译时优化。

4.避免使用 eval() 函数或数据访问运算符。
通常,较为可取且更有效的做法是只设置一次局部引用。不得已时才用eval,比如转换_droptarget为MovieClip时。

5.在开始循环前将 Array.length 赋予变量,尤其是大的循环。
在开始循环前将 Array.length 赋予变量(比如var iLength:Number),将其作为条件使用,而不是使用myArr.length 本身。
原因,在循环中,iLength是Number变量,会被放入寄存器使用,效率远比访问Array再得到length高。例如,应使用

var fontArr:Array = TextField.getFontList();
var arrayLen:Number = fontArr.length;
for (var i:Number = 0; i < arrayLen; i++) {
    trace(fontArr[i]);
}

来代替:

var fontArr:Array = TextField.getFontList();
for (var i:Number = 0; i < fontArr.length; i++) {
    trace(fontArr[i]);
}

6.注重优化循环及所有重复动作。
Flash Player 花费许多时间来处理循环(如使用 setInterval() 函数的循环)。

7.在局部变量够用时,不要使用全局变量。类静态变量也要少用。
全局变量是开发者的恶梦。实在需要全局变量的话,我建议使用singleton设计模式来进行管理。

8.声明变量时,添加 var 关键字。
这是为了编译时让编译器知道你的变量类型,优化编译。

黑羽补充一点:对关键字的使用要谨慎。
不赞成使用关键字作为自己的method和属性名,除非你确认后续开发不会用到相同的事件名和属性名。
但你怎么知道flash使用了多少隐藏关键字?太多了!比如说 className, invalidate, refresh, mouseOver等等不常用的关键词。好的方法是使用SEPY编辑器来写代码,那里面加亮了所有公布的和没有公布的关键词。而且因为很有可能和start,load,等这些常用的事件名重复,带来代码不必要的修改和麻烦。

9.对涉及到调用绘图资源的函数时,尽量先多判断再调用。
所有渐变,位置变化,创建删除MC,组件等函数都涉及到绘图资源的调用。在很多情况下,尽量先用逻辑判断变量或者对象的属性,必要时再调用这些函数。这样可以节省较多的计算资源。

分类: 生活杂谈 标签: ,

又是缓存在搞的鬼

2008年9月3日 评论已被关闭

问题描述:

通过http://www.xxx.com/install 这个地址来取得一些数据
在firefox下没问题,在 单独的swf下没有问题
在ie下就少了些数据

解决:
 最后给地址加了一个随机数,就解决了

分类: 生活杂谈 标签:

43 Hot Flex and ActionScript 3.0 APIs, tips and tools for Autumn 2008

2008年9月3日 评论已被关闭

介绍 Flex SDK 3.1 和 Flex Builder 3.0.1

Flex SDK 3.1 是一个Flex SDK里程碑式的版本,推荐开发者使用。
http://www.adobe.com/devnet/flex/articles/sdk3_fb301.html

Cairngorm 迁移进入Adobe开源网站(Cairngorm是Adobe 实验室中的Flex MVC框架)
http://weblogs.macromedia.com/amcleod/archives/2008/08/cairngorm_moved.html


Flex 架构基础 – 模块和数据转换对象

展示一个简单的方式使用模块和数据转换对象来设置简单Flex应用
http://nwebb.co.uk/blog/?p=228


教程: ActionScript 3 拖动函数

这个教程介绍ActionScript 3在布景中的拖动函数。
http://flashmymind.com/Tutorials/Actionscript/Advanced/actionscript-dragging.php


Flex 分页组件

一个小的Flex分页组件
http://www.darklump.co.uk/blog/?p=112


ModuleManager 和 IModuleInfo – 自动加载Flex模块

http://lowpitch.com/blog/2008/08/17/modulemanager-and-imoduleinfo-loading-flex-modules-dynamically/


Degrafa初学教程

Degrafa是一个Flex扩展,在FLEX中增加了对矢量数据的动态处理,包括动态添加,删除和修改,并支持SVG的路径格式数据。Mike Huntington一篇优秀文章。
http://www.mikehuntington.com/?p=22


同时使用Degrafa
高级CSS技巧
依然是Mike Huntington的文章。质量很高,推荐。
http://www.mikehuntington.com/?p=31


Alcon 3

为Adobe AIR重写过,一个简单好用的调试/日志工具。很酷。
http://blog.hexagonstar.com/alcon/


在Flex Builder中删除
css type selector 警告
在Flex Builder中删除 css type selector 警告的快速技巧
http://www.nutrixinteractive.com/blog/?p=135


在倾斜背景中的VBox, HBox Flex箱式模型
http://www.igorcosta.org/?p=160


Flex 设计/开发工作流程视频教程

http://www.ashorten.com/2008/08/11/flex-designerdeveloper-workflow-video-tutorials/


6个使用 ActionScript 3.0 的理由 – 作者Lee Brimelow

http://www.adobe.com/devnet/actionscript/articles/six_reasons_as3.html


定制 flex 皮肤

http://the.fontvir.us/b10g/?id=111


编写Flex组件, part 1

http://labs.flexperiments.nl/writing-components-in-flex-part-1/


编写Flex组件, part 2
http://labs.flexperiments.nl/writing-components-in-flex-part-2/


Actionscript 3 API 收集

http://flashenabledblog.com/2008/08/26/as3-actionscript-3-classes/


为展示对象创建 bitmap 数据对象

http://www.flexer.info/2008/08/20/how-to-make-a-bitmapdata-from-a-displayobjectuicomponent/


FCG 1.0 (Flex 代码生成器)

开源工具
http://www.dehats.com/drupal/?q=node/45


新的ActionScript 3 Singleton 函数

http://www.daniellove.net/blog/?p=81


CSKDebugger

Mac AIR 调试器
http://ultra-web.co.uk/?p=178


Fill Colors

Fill Colors 是一个分离Flex风格和布局工具,预览Flex应用外观皮肤。
http://www.fillcolors.com/


gTween

动画库 by Grant Skinner
http://www.gskinner.com/blog/archives/2008/08/gtween_a_new_tw.html


使用
Selenium来对AIR AJAX 应用做功能测试的框架
http://corlan.org/2008/08/15/functional-testing-framework-for-air-ajax-apps-based-on-selenium


Yahoo! Music API

The Yahoo! 音乐API给开发者权限来使用Yahoo! Music 目录。提供了多种方式浏览。
http://developer.yahoo.com/music/


ActionScript 3 灵活的布局类

The NpFlexLayout 类是设计用来简化DisplayObjects的布局。
http://www.blog.noponies.com/archives/109


mediacorelib –
ActionScript 3.0 核心媒体库
http://code.google.com/p/mediacorelib/


Servebox ActionScript Foundry

 ActionScript 3 / Java 框架为 Flex 2 应用设计,基于多个设计模式。
http://www.servebox.com/foundry/doku.php?id=


Flest Framework

Flest 是一个 ActionScript3 / Flex 应用框架,用来创建企业级别RIA应用。
http://code.google.com/p/flest/


Guasax Flex/AIR MVC – The MVC Flex/AIR Framework

Guasax是一个简单的框架提供可扩展的Flex应用。
http://www.guasax.com/guasax/web/en/index.php


Flex Mojos – HelloWorldTutorial

最简单的教程,创建一个HellowWorldFlex程序
http://code.google.com/p/flex-mojos/wiki/HelloWorldTutorial


Scott Evans – 对于新的 FlexBuilder 4 IDE 功能的公开讨论

Scott Evans, FlexBulder 团队的主导开发工程师,开始了一系列的新博客,讨论FlexBuilder 4 IDE 新功能,值得一看.
http://gettingandsetting.com/


dpHibernate – Hibernate lazy loading with Adobe BlazeDS

dpHibernate是一个定制的Flex库,和 custom BlazeDS Hibernate 一起使用提供对Flex应用内部的Hibernate对象 lazy loading(延迟加载)的支持。
http://blog.mikenimer.com/index.cfm/2008/5/21/dpHibernate–Hibernate-lazy-loading-with-Adobe-BlazeDS
http://code.google.com/p/dphibernate


Alternativa3D — browser 3D-engine based on Adobe Flash

Create 3D- 基于Flash场景 3D引擎。
http://alternativaplatform.com/en/alternativa3d/


KwikUML – build UML models of ActionScript and PHP classes

快速创建 ActionScript和PHP类,接口的 UML模型 的工具,以及提供SQL Entity关系设计 (ERDs).
http://labs.otuome.com/kwikuml


KitchenSync

KitchenSync 是一个 ActionScript 3.0 库,用来对动画排序以及其他基于时间的动作。
http://code.google.com/p/kitchensynclib/


as3xls – read and write Excel files in Flex

Flex读写excel文件工具

http://code.google.com/p/as3xls/


ASDebugger – A run-time debugger for AS3 Projects

AS 3项目的运行调试工具

http://labs.flexperiments.nl/asdebugger/


as3corelib update

这是一个ActionScript 3 库,包含很多有用的能使用在AS3中的 APIs 。
http://code.google.com/p/as3corelib/


swix framework – Flex development framework

Swiz 是一个简化RIA开发的Flex框架。
http://code.google.com/p/swizframework/


Gaia – open-source front-end Flash Framework for AS3 and AS2

Gaia 是一个开源的前台Flash框架,支持AS3和AS2,能够大量节省开发时间。
http://www.gaiaflashframework.com/


Penne Framework – lightweight framework for developing in Flex and Air

version 1.0 of The Penne Framework, 一个简单的 Flex and Air 框架, 是 Cairngorm 框架的备选方案.
http://www.flexpasta.com/index.php/2008/04/19/introducing-the-penne-framework-for-flex-3/


An ActionScript Compiler Written In ActionScript

一个用ActionScript写的ActionScript编译器
http://www.brooksandrus.com/blog/2008/08/27/an-actionscript-compiler-written-in-actionscript/

分类: 生活杂谈 标签: