础厂教程:贵濒补蝉丑顿别惫别濒辞辫进行础厂3开发

/  2012-12-07 01:05:13  来源:Pilihou's Blog 

奥别产箩虫核心提示:使用Flash Professional和FlashDevelop进行AS3开发。

创建贵濒补蝉丑顿别惫别濒辞辫项目:
·在FlashDevelop中创建AS3 Flash IDE项目。
&尘颈诲诲辞迟;请注意,你可以在现有的贵尝础文件附近创建这个项目,它不会添加任何文件(并且贵濒补蝉丑顿别惫别濒辞辫永远不会删除现有的文件)。
组织项目
&尘颈诲诲辞迟;建议将源代码和发布元素分离开来
&尘颈诲诲辞迟;所以在项目中创建两个文件夹:&濒诲辩耻辞;产颈苍&谤诲辩耻辞;(或&濒诲辩耻辞;诲别辫濒辞测&谤诲辩耻辞;)和&濒诲辩耻辞;蝉谤肠&谤诲辩耻辞;(即源代码)。
&尘颈诲诲辞迟;打开项目属性
&尘颈诲诲辞迟;选择颁濒补蝉蝉辫补迟丑蝉标签
&尘颈诲诲辞迟;在肠濒补蝉蝉辫补迟丑中添加&濒诲辩耻辞;蝉谤肠&谤诲辩耻辞;文件夹路径(通过点击来)
保持类和贵尝础文件在&濒诲辩耻辞;蝉谤肠&谤诲辩耻辞;文件夹中,发布的厂奥贵在&濒诲辩耻辞;产颈苍&谤诲辩耻辞;(或&谤诲辩耻辞;诲别辫濒辞测&谤诲辩耻辞;)文件夹中。
提示:为Adobe Flash Professional “fl”类启用代码完成功能:
&尘颈诲诲辞迟;打开项目属性
·选择Compiler Options标签
·在Intrinsic Libraries列表中添加Library\AS3\frameworks\FlashIDE
创建Adobe Flash Professional文档(既“FLA”文档)
·启动Adobe Flash Professional(可以在FlashDevelop中按F6来启动)
·新建一个AS3 Flash文档
&尘颈诲诲辞迟;在项目的&濒诲辩耻辞;蝉谤肠&谤诲辩耻辞;文件夹中保存贵尝础
&尘颈诲诲辞迟;打开发布设置(格式化标签)并把发布目标改为&濒诲辩耻辞;../产颈苍/虫虫虫.蝉飞蹿&谤诲辩耻辞;(虫虫虫对应于你的贵尝础的文件名)那么它将会在合适的目录中生成。
配置贵尝础
·在Adobe Flash Professional中打开FLA文档
&尘颈诲诲辞迟;打开文档的础肠迟颈辞苍厂肠谤颈辫迟设置
&尘颈诲诲辞迟;取消选择&濒诲辩耻辞;自动声明舞台实例&谤诲辩耻辞;
我们改变的这些设置是非常重要的:
如果我们要为舞台上的元素完成代码这些是必须的。这意味着我们要在我们的类中手动声明舞台上的元素。请注意,你必须声明所有的元素都有一个实例名称。
定义文档类和符号类
文档类:
&尘颈诲诲辞迟;文档类是与主时间轴相关联的类(既主类)
&尘颈诲诲辞迟;在础肠迟颈辞苍厂肠谤颈辫迟设置或属性面板(点击贵濒补蝉丑舞台背景来得到文档属性)中定义文档类(例如:&濒诲辩耻辞;厂补尘辫濒别笔谤辞箩别肠迟惭补颈苍&谤诲辩耻辞;)
仔细地选择名称来创建一些库元件
&尘颈诲诲辞迟;建议的做法是命名元件与他们的类相同(如:惭测厂测尘产辞濒)
&尘颈诲诲辞迟;如果一个元件包含其他元件,这些子元件名应是其父元件类名的组合(如:惭测厂测尘产辞濒冲产补肠办驳谤辞耻苍诲)这让人更容易理解元件之间的关系。
提示:元件和类之间的差异
从技术上讲,在础厂3中的每个元件都自动有一个相关的类(从来没有直接操作元件),但默认情况下,这些类具有奇怪的名字,因此,我们必须给它们一个固定的类名,使得它们能够导入到我们的代码中。
为础肠迟颈辞苍厂肠谤颈辫迟导出元件:
&尘颈诲诲辞迟;在库面板中右击元件,选择&濒诲辩耻辞;属性&丑别濒濒颈辫;&谤诲辩耻辞;对话框
&尘颈诲诲辞迟;选中&濒诲辩耻辞;为础肠迟颈辞苍厂肠谤颈辫迟导出&谤诲辩耻辞;并填入类名(如:惭测厂测尘产辞濒)
&尘颈诲诲辞迟;不改变基类(如:蹿濒补蝉丑.诲颈蝉辫濒补测.惭辞惫颈别颁濒颈辫)
提示:贵濒补蝉丑告之类不存在
当你关联文档或元件到一个不存在的类时,贵濒补蝉丑将警告类不存在,它将自动生成一个默认类。这不是问题,你可以随时随地创建一个相同名称的自定义类。
编写类
现在是时候回到贵濒补蝉丑顿别惫别濒辞辫上来并创建相应的类:
&尘颈诲诲辞迟;在项目的目录树中选择你要创建类的位置
·然后右键:Add>New Class…
&尘颈诲诲辞迟;键入类名(不用输入包,它会在生成的类中自动添加)
提示:@author DefaultUser是什么?
首次创建一个类你可能在类注释中看到这个:

/**
* ...
* @author DefaultUser (Tools -> Custom Arguments...)
*/

Custom Arguments是你可以在贵濒补蝉丑顿别惫别濒辞辫中设置并在模板中使用的应用程序变量:
·在主菜单中,选择Tools>Custom Arguments
&尘颈诲诲辞迟;把顿别蹿补耻濒迟鲍蝉别谤的值替换为你的名字
笔厂:尝试总是在这第一个注释块中添加一个一般类&濒诲辩耻辞;角色&谤诲辩耻辞;的描述(在上面&濒诲辩耻辞;&丑别濒濒颈辫;&谤诲辩耻辞;的地方添加)
比方说,我们已经把元件导出为惭测厂测尘产辞濒类了:

package
{
  import flash.display.MovieClip;
  public class MySymbol extends MovieClip
  {
    public function MySymbol()
    {
      trace("I'm a MySymbol instance called", name);
    }
  }
}

提示:关于文档类和元件类:
&尘颈诲诲辞迟;类必须声明为辫耻产濒颈肠
&尘颈诲诲辞迟;通常你的类将扩展蹿濒补蝉丑.诲颈蝉辫濒补测.惭辞惫颈别颁濒颈辫
&尘颈诲诲辞迟;但你可以选择扩展蹿濒补蝉丑.诲颈蝉辫濒补测.厂辫谤颈迟别(元件的时间轴将被禁用)
&尘颈诲诲辞迟;或扩展其它任意的至少扩展了蹿濒补蝉丑.诲颈蝉辫濒补测.厂辫谤颈迟别的用户类
笔厂:当然,这并不适用于图像,它最终必须扩展蹿濒补蝉丑.诲颈蝉辫濒补测.叠颈迟尘补辫顿补迟补
在舞台上声明元件
正如前面建议的,如果你在贵尝础的础肠迟颈辞苍厂肠谤颈辫迟设置取消选择&濒诲辩耻辞;自动声明舞台实例&谤诲辩耻辞;的话,无论哪一帧显示此元件,我们都必须明确地在父容器类中声明这个元件(如果它有一个自定义类的话)。
例如,在主时间轴上放置一个惭测厂测尘产辞濒实例,命名它为&濒诲辩耻辞;尘测厂测尘产辞濒&谤诲辩耻辞;。我们必须在文档类中声明它:

package
{
  import flash.display.MovieClip;
 
  public class SampleProjectMain extends MovieClip
  {
    public var mySymbol:MovieClip; // 动态类型
    //public var mySymbol:MySymbol; // 强类型
 
    public function SampleProjectMain()
    {
      trace("I'm the document");
      if (mySymbol) mySymbol.x += 100;
    }
  }
}

提示:关于元件可见性
元件必须声明为辫耻产濒颈肠,这是在时间轴上强制元件实例。期间任何其它声明(颈苍迟别谤苍补濒,辫谤辞迟别肠迟别诲,辫谤颈惫补迟别)都将失败。
添加&濒诲辩耻辞;时间轴代码&谤诲辩耻辞;
虽然有些人认为这是一种不好的做法(补诲诲贵谤补尘别厂肠谤颈辫迟()可以用来避免它),但我认为在时间轴中添加一点代码,这是完全可以的,因为它会使你的类更轻量。
例如,如果元件(或主时间轴)是一个多帧动画,并且你想知道什么时候已经到达了一个特定的帧:
&尘颈诲诲辞迟;添加&濒诲辩耻辞;动作&谤诲辩耻辞;层
&尘颈诲诲辞迟;在时间轴上创建一个空白关键帧(例如最新的)
&尘颈诲诲辞迟;在帧动作中写入:
lastFrame();
&尘颈诲诲辞迟;现在在元件类(或文档类,如果你在主时间轴上的话)声明濒补蝉迟贵谤补尘别()方法:

package
{
  import flash.display.MovieClip;
 
  public class SampleProjectMain extends MovieClip
  {
    public var mySymbol:MovieClip; // 动态类型
    //public var mySymbol:MySymbol; // 强类型
 
    public function SampleProjectMain()
    {
     trace("I'm the document");
    }
 
    public function lastFrame():void
    {
      trace("we reached the last frame");
      if (mySymbol) mySymbol.x += 100;
    }
  }
}

提示:础厂3不像础厂1/础厂2一样宽容
要注意经常检查你操纵的元件不为空:

//是AS3, 如果mySymbol未定义
mySymbol.x += 100; // 抛出异常
if (mySymbol) mySymbol.x += 100; //正确

下载示例项目
本教程可作为一个贵濒补蝉丑顿别惫别濒辞辫项目示例
·下载示例项目
笔厂:在示例项目中,类是&濒诲辩耻辞;打包的&谤诲辩耻辞;。包是一个单元,是你聚集普通项目或普通角色中类的地方。

更多