FlashBuilder入门.docx_第1页
FlashBuilder入门.docx_第2页
FlashBuilder入门.docx_第3页
FlashBuilder入门.docx_第4页
FlashBuilder入门.docx_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

As3FlashCS3Help_cn.chm使用Flash入门浏览As3.0 编程看一遍,知道语法 程序结构,知道相应语法哪里可以查(Coding:FlexBuilder/FlashDeveloper)重点:语法 常量与变量 const/var 包package对象和类 接口 面向对象:Object/Class/Interfaceprivate/protect/public/internaloverrideextends/implements static接口方法定义不能包含任何属性(如 public 或 private),但在实现接口的类的定义中,已实现的方法必须标记为 public。 通过 extends 语句可以使用一个接口继承多个接口,通过 implements 语句可以使用一个类继承多个接口。运算符/条件语句/循环for.in是把key依次取过来for.each.in是把key依次取过来var myObj:Object = x:20, y:30; for (var i:String in myObj) trace (i); / output: / x / yfor each(var num in myObj) trace (num); / output: / 20 / 30函数 基元数据类型类似按值传递:varintOne:int=1;varintTwo:int=1;trace(intOne=intTwo);/true/=var a1:int = 10;var a2:int = a1;trace(a1,a2);/10,10a2 = 11;trace(a1,a2);/10,11基元数据类型包括:Boolean、int、Number、String 和 uint复杂数据类型类似按引用传递:vararrayOne:Array=newArray(a,b);vararrayTwo:Array=arrayOne;trace(arrayOne=arrayTwo);/true/-vararrayOne:Array=newArray(a,b);vararrayTwo:Array=newArray(a,b);trace(arrayOne=arrayTwo);/false数据结构:String/Array/Vector/Dictionary事件:Event/EventDispatcher显示对象/显示编程:Stage/DisplayObject/InteractiveObject/DisplayObjectContainer/Sprite/MovieClipmouseChildren : Boolean 确定对象的子项是否支持鼠标 mouseEnabled : Boolean 指定此对象是否接收鼠标消息处理文本TextField处理位图Bitmap/BitmapData1、可以用CopyPixels函数的就用,这个函数是极节省内存的。与直接使用一个位图的bitmapData数据生成一个新的bitmap基本没有差别。而且速度也很不错。 SetVector/SetPixels2、在使用位图资源时,尽可能的少用new BitmapData来生成位图,因为这相当于载入了一张新位图。3、位图资源无论文件本身如何压缩,如何小,但载入内存后,其占用的内存空间,基本可按来计算,当然实际结果会比这个数值略大7 位图类对象的位图数据,调用销毁函数很有必要,在不使用某个位图资源时,要将某个位图资源手动销毁,垃圾回收并不起作用 dispose()网络和通信:外部数据Loader/URLLoader套接字 Socket本地数据 SharedObjectvar so:SharedObject = SharedObject.getLocal(userHighScore);so.data.highScore = new Number(1234567890);so.flush();父子窗口通信LocalConnectionAs3.0 组件知道大概有哪些组件,主要用到的几个组件重点看一下怎样用(Display: Flash CS5)fla/swf /swc/flvButton/List/ScrollPane/UIScrollBar/Slider/CheckBox/ComboBox/RadioButtonAs3.0 类库知道相应类哪里可以查;找到下面的类看一遍,了解每个类有哪些相应的属性和操作编程中列过的类TimerDateGraphicsMathShapeRectangleMatrix1.x 2.x的可以不看开发环境As3项目Flashplayer:10.x调试版Flash CS5:资源动画制作Flex 4:代码编辑编译 项目发布Flash CS51. IDE2. 元件:按钮 图形 影片(Sprite/MovieClip)3. 程序中要用资源产生实例需要导出类4. Flash组件:Button/ScollPane/UIScrollBar/ComboBox/CheckBox/RadioButton/List/Slider修改外观5. 图层 时间轴 帧6. 文本字体使用系统默认字体Flex 41. IDE2. 调用层次结构 打开声明 全项目搜索3. 编译器属性4. 加入库文件5. 调试:控制台 单步 表达式6. Asdoc 注释格式/flex/3/html/index.html?content=asdoc_9.html生成打开 开始程序AdobeAdobe Flex 3 SDK Command Prompt进入代码路径后,执行:asdoc -source-path . -doc-sources ./* * 拆分参数为对象,参数格式key=value&key=value * * param val参数内容,为地图编辑器设置的内容 * */public function setParam(val: String): voidpureMVC架构PureMVC_Implementation_Idioms_and_Best_Practices_cn.pdfpureMVC归纳起来给架构实现了3点:1.MVC规范2.统一途径注册和获取对象,不管是mediator还是command还是proxy,开发者不用费心考虑对象数据等应该怎么存储和获取,如何维护。3.订阅的消息机制。尽量使用Command,让Command成为Mediator与Proxy之间通讯的唯一桥。Mediator和Proxy中发出的 Notification,接收者一定是某个Command,然后再由Command处理并将结果转发给真正的消息接收者,Command就算仅仅起一个 转发作用,仅仅有不到10行代码,也要创建一个Command类绝对不能在Proxy中直接调用Mediatorcore libLoadResourceProxy:加载并缓存了外部(swf)资源, fGetClassFromSWF (),fGetDisplayObjectByName(),fGetBitmapformSwf(),fGetBitmapDataformSwf()PageMediator:初始页面显示,pm/pb/mc开头的定义mouse的各种事件其他AS3编码规范2010年3月10日 Artlee 版本v1作者根据自己多年的Flash项目开发及管理经验,吸取驼峰命名法与匈牙利命名法的长处,结合MVCS开发模式,融入面向对象的开发思想,并且考虑到业界已有的不成文的约定,兼顾Flash开发以及Flex开发的便利性,草拟了这份AS3编码经验。请各位大师多多指教。一,基本原则1. 约定大于配置,约定大于规范 2. 规范思想,并非为束缚手脚 3. 在无歧义的前提下,命名力求简洁 4. 在语义明了的前提下,命名力求省力,如果可以同时不按shift,则不按 5. 命名表义词语类型,名称表义为先 6. 坚持使用强类型 7. 把常用的成员,放在容易找到的地方,给予它们更大的访问权限 8. 源码格式以清晰易读为准 9. 写注释优先极大于写代码二,一般规则1. 文件组织结构与包(在MVCS开发模式下)范式:(companyDomain|teamName).projectNamecontrollers 控制器目录events 事件目录managers 管理器目录models 数据模型目录models.vos VO对象目录services 数据服务目录views 视图目录views.uis UI目录utils 工具类目录Module_Name.as 模块类(IFacade)说明:|表示或者,两者取其一词性:名词命名:驼峰命名法,第一个单词首字母小写,第二个单词首字母大宇,因形似驼峰而得名 2. 类与类文件范式:SealedNameType说明:若无歧义,之内可略去,以下同如PopUpManager、MouseEvent、StringUtil、FishController等在MVC开发模式下,如果去掉Type,在项目中则可能出现同名文件,虽然完全限定名不同,但同时在同一个类中被引入时,会给编码带来不便。在这种情况下,保留Type更为合理。词性:名词命名:大驼峰命名法(首单词首字母大写) 3. 接口范式:ISealedNameType说明:接口与类相比,不同之处仅在于附有前缀I词性:字母I名词命名:大驼峰命名法(首单词首字母大写) 4. 常量范式:CONST_VARIABLE_NAME “constVariableName”命名:常量名称单词大宇,间以下划线,常量值使用驼峰命名法词性:名词、动名词等用途:在事件类中定义事件类型,在枚举类中定义枚举值等 5. 实例变量、参数变量、函数变量与类静态变量范式:variableName命名:驼峰命名法 6. 函数范式:varName_getMethodName(argName1 :String)命名:驼峰命名法词性:动词、动名词 7. 命名空间范式:lib_internal命名:小写字母单词,间以下划线词性:名词形容词 8. 类成员的位置成员优先级从高到低:常量,静态变量,静态函数,构造器,实例变量,getter/setter属性存取器,函数同级别的成员按访问修饰符排序:public,internal,protected,private三,具体细则1. 在参数变量、函数变量中常用的缩写c : Controller(或ctrl)m: Modelv:Viewe : Event or Errormdl: Moduleui: UIsrv: Servicebtn:Buttonmc:MovieClipspt:Sprite 2. 在MVCS开发模式下,常用的Type后缀视图:View视图接口:IView控制器:Controller数据模型:Model数据对象:VOUI:UI管理器:Manager事件集:Events事件:Event常量:s数据服务:Service工具类:Util模块:Module 3. 事件句柄函数命名举例onClick(e :MouseEvent) :voidbtnClose_onClick(e:MouseEvent) :voidmouseEventHandler(e :MouseEvent) :voidmcName_mouseEventHandler(e :MouseEvent) :void 4. 颜色变量使用uint 5. 时间变量使用Number 6. switch多在事件句柄函数中使用 7. 优先使用Vector,在声明数组Array时,标明它的元素类型,如fishs : Array /* Element Of Fish */ 8. 避免使用try.catch 9. 在for循环中,使用j、k、m、n作为循环数字 10. 不要声明没有类型的变量,不要使用使用类型修饰符,避免返回类型为Object的对象 11. 不用使用Object作为HashMap,使用Dictionary代替 12. 基本弃用private,默认非公开的实例变量与实例函数使用protected访问修饰符 13. 在VO类中,默认所有变量使用基元类型作为类型修饰符,使用public作为访问修饰符 14. 基本弃用getter/setter,在一般情况下,不使用public的getter/setter存取器,代替以public getMethod/setMethod。 15. 把花括号放在同一列,如:public getMehtod() : void 16. 在类、函数上使用ASDoc注释,如:/* comment*/ 17. 不使用下划线作为变量前缀。 18. 以Flash制作资源文件时:元件成员分层放置,每层须有名称库元件分目录放置,以类别组织文件夹元件的实例名称使用驼峰命名法,命名规则与实例变量同元件的导出名称与所要绑定的类名一致Label与AS均单独放在一层里,置于最上面避免使用mask尽量不要使用滤镜 19. 控制显示对象的位置时,避免使用小数 20. 修改fla文件之前要签出、锁定,再修改。 21. 使用空白字符使代码明晰易读,如:在单词、符号之间使用空格在函数、变量之间使用空行在包、类、函数、匿名函数各级别间使用缩进如果参数列表过长,或数组元素很多,可以拆行,使用相同缩进 22. 在导入类时,避免使用号 23. 约定在注释中添加fixed标签的类或函数,不要随意更改 24. 函数变量在函数顶部统一声明,在事件函数内部移除事件监听统一放在最上面优化/zh_CN/as3/mobile/flashplatform_optimizing_content.pdf第 1 章: 简介帧原理每个帧循环包括两个阶段,分为三部分:事件、enterFrame 事件和呈现。感知性能和实际性能之间的区别很重要。达到最佳感知性能的方式与获得绝对最快性能的方式并不始终相同常见的一个建议是“ 避免过早优化”。某些性能优化需要以难以读取或灵活性差的方式编写代码。此类代码经过优化后更难维护对于这些优化,在选择优化代码之前,通常最好等待并确定代码的特定部分是否执行性能很差。第 2 章: 节省内存对于非交互式简单形状,请使用 Shape 对象。对于不需要时间轴的交互式对象,请使用 Sprite 对象。对于使用时间轴的动画,请使用MovieClip 对象var a:Number;trace(getSize(a);/ output: 8var a:Number = 8;trace(getSize(a);/ output: 4重用对象尽可能重复使用对象而不是重新创建对象。var area:Rectangle;for (var:int = 0; i MAX_NUM; i+)/ Do not use the following codearea = new Rectangle(i,0,1,10);myBitmapData.fillRect(area,COLOR);在各个循环迭代中重新创建 Rectangle 对象将使用更多内存且速度更慢,因为将在各个迭代中创建一个新对象var area:Rectangle = new Rectangle(0,0,1,10);for (var:int = 0; i MAX_NUM; i+)area.x = i;myBitmapData.fillRect(area,COLOR);-var myImage:BitmapData;var myContainer:Bitmap;const MAX_NUM:int = 300;for (var i:int = 0; i MAX_NUM; i+)/ Create a 20 x 20 pixel bitmap, non-transparentmyImage = new BitmapData(20,20,false,0xF0D062);/ Create a container for each BitmapData instancemyContainer = new Bitmap(myImage);/ Add it to the display listaddChild(myContainer);/ Place each containermyContainer.x = (myContainer.width + 8) * Math.round(i % 20);myContainer.y = (myContainer.height + 8) * int(i / 20);释放内存删除对对象的所有引用以确保触发垃圾回收。var mySprite:Sprite = new Sprite();/ Set the reference to null, so that the garbage collector removes/ it from memorymySprite = null;当对象设置为 null 注: 将对显示对象的引用设置为 null 不能确保冻结该对象。该对象在作为垃圾回收之前,仍将占用 CPU 周期。在将对对象的引用设置为 null 之前,先确保正确地停用对象。/ Create a BitmapData instancevar image:BitmapData = new BitmapData(800, 600);image.dispose();image = null;尽管 dispose() 方法可删除内存中的像素,但仍必须将引用设置为 null 才可完全释放内存。当不再需要 BitmapData 对象时,要始终调用 dispose() 方法并将引用设置为 null,以便立即释放内存。使用位图矢量和位图 使用矢量(而不是位图)是节省内存的好方法。然而,使用矢量(特别是大量矢量),会显著增加对 CPU 或 GPU 资源的需求BitmapData 单个引用滤镜和动态位图卸载避免使用滤镜,将滤镜应用于显示对象时,运行时将在内存中创建两个位图 ;在对它们进行修改时,仍要求大量 CPU 或 GPU 处理最佳做法是,尽可能使用通过创作工具(例如 Adobe Photoshop)创建的位图来模拟滤镜。避免在 ActionScript 中使用运行时创建的动态位图。使用外部创作的位图可帮助运行时减少 CPU 或 GPU 负载,特别是当滤镜属性不随时间更改时。如果可能,在创作工具中创建位图所需的任何效果。然后,可以在运行时中显示该位图,而无需对它进行任何处理,这样速度要快得多。文本对象和内存Flash Player 10 和 AIR 1.5 引入了一种强大的新文本引擎,即 Adobe Flash 文本引擎 (FTE),可节省系统内存。但是,FTE是一个低级 API,要求在其上使用 flash.text.engine 包中提供的其他 ActionScript 3.0 图层。对于只读文本,最好使用 Flash 文本引擎,它占用较少的内存并提供更好的呈现效果。事件模型与回调考虑使用简单的回调代替事件模型。第 3 章: 最大程度减小 CPU 使用量冻结和解冻对象使用 REMOVED_FROM_STAGE 和 ADDED_TO_STAGE 事件正确冻结和解冻对象即使将该影片剪辑从显示列表中删除,它仍会调度 Event.ENTER_FRAME 事件。影片剪辑仍在运行,但不会呈现Player 10 和 AIR 1.5 对 Loader 类引入了一个重要的新方法,称为 unloadAndStop()。通过此方法,可以卸载 SWF 文件、自动冻结加载的 SWF 文件中的每个对象并强制运行垃圾回收器。调用 unloadAndStop() 方法时将执行下列操作: 停止声音。 将删除注册到 SWF 文件的主时间轴中的侦听器。 停止 Timer 对象。 释放硬件外围设备(如摄像头和麦克风)。 停止每个影片剪辑。 停止调度 Event.ENTER_FRAME、Event.FRAME_CONSTRUCTED、Event.EXIT_FRAME、Event.ACTIVATE 和Event.DEACTIVAT鼠标交互尽可能考虑禁用鼠标交互。mouseEnabled 和 mouseChildren 属性计时器与 ENTER_FRAME 事件根据内容是否为动画,选择计时器或 ENTER_FRAME 事件。可通过 Stage.frameRate 属性来查看帧速率。将应用程序中 Timer 对象和注册的 enterFrame 处理函数的数量降至最少。根据其发生的频率,使用最少数量的 Timer 对象和组操作. 使用一个 Timer 对象,并以 Timer 对象的 delay 属性时间间隔的倍数触发操作。停止未使用的 Timer 对象。 stop() 方法补间症状要节省 CPU 电量,请限制补间的使用第 4 章: ActionScript 3.0 性能Vector 类和 Array 类尽可能使用 Vector 类而不是 Array 类。绘图 API使用绘图 API 可加快代码执行。Flash Player 10 和 AIR 1.5 提供了一个新的绘图 API 此新绘图 API 包含下列方法: drawPath() drawGraphicsData() drawTriangles()例子var container:Shape = new Shape();container.graphics.beginFill(0x442299);var coords:Vector. = Vector.(132, 20, 46, 254, 244, 100, 20, 98, 218, 254);container.graphics.moveTo ( coords0, coords1 );container.graphics.lineTo ( coords2, coords3 );container.graphics.lineTo ( coords4, coords5 );container.graphics.lineTo ( coords6, coords7 );container.graphics.lineTo ( coords8, coords9 );/ container.graphics.drawPath(commands, coords);addChild( container );事件捕获和冒泡使用事件捕获和冒泡可以最大程度地减少事件处理函数。处理像素使用 setVector() 方法绘制像素。当绘制像素时,使用 BitmapData 类的相应方法即可进行一些简单优化。快速绘制像素的一种方式是使用 setVector() 方。要提高性能,请在对 setPixel() 或 setPixel32() 方法进行多次调用之前和之后使用此方法及 unlock() 方法。调用 lock() 和 unlock() 可防止屏幕进行不必要的更新。正则表达式使用 String 类方法(如 indexOf()、substr() 或 substring())代替正则表达式来实现基本字符串查找和提取。其他优化对于 TextField 对象,请使用 appendText() 方法,而不要使用 += 运算符。例子:myTextField.autoSize = TextFieldAutoSize.LEFT;var started:Number = getTimer();for (var i:int = 0; i 1500; i+ )myTextField.text += ActionScript 3;trace( getTimer() - started );/ output : 1120在以下示例中, += 运算符被替换为 appendText() 方法:var myTextField:TextField = new TextField();addChild ( myTextField );myTextField.autoSize = TextFieldAutoSize.LEFT;var started:Number = getTimer();for (var i:int = 0; i 1500; i+ )myTextField.appendText ( ActionScript 3 );trace( getTimer() - started );/ output : 847请尽可能更新循环外的文本字段。var started:Number = getTimer();var content:String = myTextField.text;for (var i:int = 0; i 1500; i+ )content += ActionScript 3;myTextField.text = content;trace( getTimer() - started );/ output : 2尽可能避免使用中括号运算符。使用中括号运算符可能会降低性例子for ( i = 0; i lng; i+ )arraySpritei.x =;arraySprit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论