存档

文章标签 ‘Flash’

11个以上的手把手游戏开发教程

2010年8月27日 没有评论

Flash是个非常灵活的游戏建立工具,大多数时候我们从网上可以找到flash游戏AS3资源比如Zuma-like Flash Game With AS3 Source Code,对于想建立自己游戏的初学者来说,手把手教程是个好的选择。很多网站都提供了免费或付费的 flash教程,这儿收集了十一个以上的flash游戏开发手把手教程。慢用!
Flash 里的高等数学函数
许多flash用户想利用自然运动法则做些真正酷的东西。能在屏幕上基于几何运算来移动物件不是很不错吗?不幸的是,flash 4能提供的高等数学函数只有Int()和Random()。两个都很有用不过我们真正需要的是Exp(), Sqrt(), Sin(), and Cos(),对不?不过,你很幸运。这个教程教你如何做出这东西并附带一段简单的代码。不用担心,即使你不懂泰勒级数,你也仍能够拷贝对的代码过去自己的flash影片中。
image011.png

下载 (195.96 KB)

昨天 19:26

AS3特色运动:小行星360度运动
如果我们要谈特色运动的话,最重要的莫过于基于旋转的360度运动。我不知道它是不是有特别的名字,我所知的就有360度运动,旋转运动,定向运动到小行星风格运动。从任何角度来看,它都属于游戏史上由来已久的运动风格,也必然是如今flash游戏工业的有益选择。那么做这种基于角度的运动有多难呢?一点也不难。
基地保卫者
游戏目标是通过射击来袭的飞机和它们扔下的炸弹来保卫埋在草丛下的TNT。如果有炸弹落到草地上,就会留下一个坑。当炸弹接触到TNT的时候游戏失败。飞机将会越来越快的出现,扔炸弹的速度也一样。击中一架飞机或者炸弹得一分。
image014.png

下载 (69.92 KB)

昨天 19:26

创建一个纵向射击手
我们将创建一个让我们的超级英雄Pawel射杀穿屏而过飞龙的游戏。我提供了所有FLA所需的图片,不过你需要把图片摆到对的地方。相对于其他面面俱到的垂直射击游戏教程,这个教程更多的是在解释某些设计工作的代码。
image017.png

下载 (44.26 KB)

昨天 19:26

Flash竞速游戏教程
这个教程将是其他一系列此类教程的开始。
image020.png

下载 (27.8 KB)

昨天 19:26

游戏创建教程
这个教程是一篇手把手的长篇文章的第一部分,它将指导你经历创建Flash游戏的全过程,包括输入管理,基本物理,碰撞检测还有更多。
image023.png

下载 (9.73 KB)

昨天 19:26

如何用XML和ActionScript在Flash 8里做一个动态杀人游戏?
在这个针对Flash8和AS2的详细课程里,我将向你展示如何创建一个完整的动态杀人游戏。这个课程本来准备给中高级As用户的。如果你完全是新手,我建议你了解多点ActionScript再回到这里来学习。作为该课程的延续,你需要知道基本的As概念,比如变量,if/else条件逻辑,for循环,函数基础,路径,动态文本域和影片剪辑事件。
image026.png

下载 (49.17 KB)

昨天 19:26

通过简单的避让游戏教程学习AS3
很多Flash开发者发现从AS2到AS3的跳跃是非常令人畏缩的,相反很多其他语言的程序员却发现AS3很直观,而很讨厌AS2。这个教程不需要你知道AS2,甚至不需要你用过Flash。如果已经有某些语言的编程基础的话你将会发现很简单,像变量,if声明体,循环,和函数,没有基础也不用担心。我将指出AS2和AS3之间的主要不同,以便Flash开发者做好转换,不过我不会集中精力讲这些。
image029.png

下载 (30.08 KB)

昨天 19:27

做一个基础塔防的Flash游戏
游戏概念很简单:有条路,路上走着些奴隶。你必须在他们到达路端前杀掉所有奴隶。你可以建立设施来杀奴隶,并赚钱升级武器,同时奴隶也会变得更强大移动更快。
image032.png

下载 (195.34 KB)

昨天 19:27

Flash游戏里的射击目标
这是基础空间射击游戏教程的续篇,就是用导弹摧毁小行星的那个。如果你没有跟过这个教程,可以下载FLA。
image035.png

下载 (50.56 KB)

昨天 19:27

As的简单猜拳游戏
我们都玩过这样的游戏:标记0到1000之间的数,让其他人猜。简单的反馈高了还是低了的信息最后指向答案。
image038.png

下载 (23.27 KB)

分类: Flash Platform 标签: , ,

Flash游戏相关的电子书

2010年3月27日 评论已被关闭
分类: Flash 标签: , ,

在windows 7中配置开发者沙箱

2009年10月11日 评论已被关闭

image

路径和XP系统不一样了
C:\Users\用户名\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust 目录下建立一个myTrustFiles.cfg,内容写信任的路径

附在XP中设置:

在C:\windows\system32\Macromed\Flash\FlashPlayerTrust 下面,创建一个文本文件,例如XXX.cfg,把开发时要运行的swf所在目录每个目录一行,写到dev.txt文件中,例如:
c:\test\
E:\

分类: Flash 标签:

基于FireBug的Flash调试插件FlashBug

2009年10月10日 评论已被关闭

基于FireBug的Flash调试插件FlashBug

进入查看详情

分类: Flash 标签: ,

10件高级Flash开发者应该知道的事

2009年9月13日 评论已被关闭

原文:http://pv3d.org/2009/08/28/10-things-every-senior-flash-developer-should-know/

I’ve interviewed quite a few Flash/Flex developers as potential employees for Roundarch. The hard part for me is knowing exactly what questions to ask to be able to gauge a Flash dev’s skill level.

So, I made a list. From my experience this list allows me to judge the skill level and experience of the devs I interview.

If you’re not quite “Senior” level yet, read through the list and study up from the links. If this stuff is “old hat” to you, please critique this list add more references in the comments.

1.      The Elastic Racetrack
You need to understand when events fire, when code is executed, and when the player renders. It’s really the foundational concept of Flash Player.
http://www.craftymind.com/2008/04/18/updated-elastic-racetrack-for-flash-9-and-avm2/

2.      FlexSDK, mxmlc, compc, and all that jazz
You need to know what’s going on when you hit that “run” button in Eclipse.
http://www.senocular.com/flash/tutorials/as3withmxmlc/
http://livedocs.adobe.com/flex/3/html/help.html?content=apparch_08.html

3.      Player Events, Custom Events, Event Bubbling
I can’t imagine where flash player would be without frames and mouse clicks.
http://www.adobe.com/devnet/actionscript/articles/event_handling_as3_03.html
http://livedocs.adobe.com/flex/3/langref/flash/events/package-detail.html
http://www.tink.ws/blog/custom-events-in-as-30-dont-forget-to-override-the-clone-method/
http://jacwright.com/blog/70/how-to-listen-to-flash-events-that-dont-bubble/

4.      Statements, Keywords, and Directives
You should never be surprised by a new “word” in as3. If you don’t know what “static” or “override” or others are, learn them.
http://livedocs.adobe.com/flex/2/langref/statements.html

5.      ASDoc
Someday, you’ll re-read your code and have no idea what it does. The stress here is on proper documenting, but generating asdocs is nice too.
http://livedocs.adobe.com/flex/3/html/help.html?content=asdoc_3.html

6.      Managing visual assets (images, fonts, CSS, etc)
Flash is visual. So you need to know how to manage assets with code.
http://www.gskinner.com/talks/flexlovesflash/
http://code.google.com/p/queueloader-as3/
http://code.google.com/p/bulk-loader/

7.      Arrays, Collections, Dictionaries, Mapping
You’re not just working with one MovieClip here, so you need to know how to control multiple objects at once.
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Array.html
http://www.gskinner.com/blog/archives/2006/07/as3_dictionary.html
http://code.google.com/p/as3ds/

8.      Programmatic motion (tweening, easing)
If you wanted things to stay still, you should’ve stuck with HTML
http://blog.greensock.com/tweenmaxas3/
http://www.amazon.com/Foundation-Actionscript-3-0-Animation-Making/dp/1590597915/ref=sr_1_1?ie=UTF8&s=books&qid=1243014431&sr=8-1

9.      OOP and Coding Against Frameworks
The days of a one huge .as file are over. You need to smartly move your code into organized and reusable objects. Also, now there are plenty of popular as3 frameworks to help manage your code. Read up on them and start using one.
http://www.adobe.com/devnet/actionscript/articles/oop_as3.html
http://www.actionscript.org/resources/articles/684/1/Object-Oriented-Programming-in-AS3/Page1.html

10.  Version control
Unless you think your code is worthless, you need to learn how to back it up properly.
http://tortoisesvn.net/downloads
http://versionsapp.com/
http://en.wikipedia.org/wiki/Revision_control
http://git-scm.com/
http://www.nongnu.org/cvs/

分类: 生活杂谈 标签: ,

基于Facebook和Flash平台的应用架构解析(二)

2009年8月27日 评论已被关闭
分类: 生活杂谈 标签: , ,

基于Facebook和Flash平台的应用架构解析(一)

2009年8月24日 评论已被关闭
分类: 生活杂谈 标签: ,

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年8月5日 评论已被关闭

忙碌了一阵,终于有些空闲的时间可以弄点小东西了,今天晚上研究了一下颜色方面,实现了一下常见的颜色选择器,下一步打算把它完善起来,制作成一个组件。

http://www.hcxmflash.cn/test/color.swf