Flash CS工具当初被官方推出的目的是提供给动画设计人员使用的flash开发工具,并具备时间轴,图层等概念,不过,对于一位编程人员来说,CS工具中的脚本代码编辑窗口就有点业余了,它仅仅具备一点点甚至可以说没有代码提示的功能,所有类名都需手工打入,增加了编程人员的记忆难度降低了效率提高了拼错的概率。所以对于一个Flash非设计人员来说,就很有必要选择新的开发工具,也可以叫集成开发环境(IDE)了。
Flash Builder和FlashDevelop是两款专门为Flash程序员提供的编码工具,具体介绍我就不多啰嗦了,至于安装及使用方法,相信大家很快都能利用各种途径学会。我所选择使用的工具是Flash Builder,所以就会按照此软件的开发流程和使用方式给大家讲之后的例子。
对于用惯了CS工具的人来说,刚上手接触全代码的开发环境有点不适应,不过若是你有着“做一名高级flash开发工程师”的崇高理想的话就必须学会开始适应这更专业的开发环境才行,而且你慢慢地会发现Flash Builder带给你的全新编码体验。
好了,在讲完前戏之后带来我们今天一个非常基础的例子,我给出的例子一般都是研究算法为主,所以我们今天就暂不涉及界面,仅用trace()语句来验证我们算法的准确性。首先我们需要先建立一个ActionScript的工程,名字随便取,我个人还是比较倾向于取一些fuck,IamYourDaddy之类的工程名,显得比较有杀气。新建完成后我们看到src目录下自动生成了一个与你工程名一致的as文件(若工程名为中文,则此as文件名默认为Main.as),且自动将其设置为了默认应用程序(文件右上方有一个蓝色圆球)。双击此as文件进入编辑界面,我们看到这是一个继承于Sprite的类,在ActionScript工程中一般只有Sprite可作为应用程序运行。(更多面向对象的内容请参考黑羽的《殿堂之路》)在构造函数中我们不建议写很多代码,通常用一个init()函数把构造函数要做的大部分工作写在里面,首先把我的代码全部贴上来再讲解吧,我要给大家展示的是一个计算器类,我们可以用它来做一些简单的运算:
- package
- {
- import flash.display.Sprite;
- import flash.events.KeyboardEvent;
- import flash.ui.Keyboard;
- public class Calculator extends Sprite
- {
- private var Num1:Number = 14;
- private var Num2:Number = 11;
- private var Operate:String;
- private var OperateName:Array = ["加法","减法","乘法","除法","开方","平方"];
- public function Calculator( )
- {
- init();
- }
- public function doCalculate( num1:Number, num2:Number = 0, operate:String = "+" ):Number{
- var result:Number = 0;
- switch( operate ){
- case "+":
- result = num1 + num2;
- break;
- case "-":
- result = num1 - num2;
- break;
- case "*":
- result = num1 * num2;
- break;
- case "/":
- result = num1 / num2;
- break;
- case "sqrt":
- result = Math.sqrt( num1 );
- break;
- case "power":
- result = Math.pow( num1, num2 );
- break;
- default:
- trace("您输入的运算符有误");
- break;
- }
- return result;
- }
- private function init():void{
- trace("欢迎使用计算器,此次运算的对象分别为:" + Num1 + "和" + Num2);
- stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
- trace("请输入运算符,本计算器提供以下运算符,请输入您需要进行运算的运算符编号:");
- trace("0:加法","1:减法","2:乘法","3:除法","4:开方","5:平方");
- }
- private function onKeyDown( event:KeyboardEvent ):void{
- switch( event.keyCode ){
- case Keyboard.NUMPAD_0:
- Operate = "+";
- break;
- case Keyboard.NUMPAD_1:
- Operate = "-";
- break;
- case Keyboard.NUMPAD_2:
- Operate = "*";
- break;
- case Keyboard.NUMPAD_3:
- Operate = "/";
- break;
- case Keyboard.NUMPAD_4:
- Operate = "sqrt";
- break;
- case Keyboard.NUMPAD_5:
- Operate = "power";
- break;
- default:
- trace("无此运算符");
- return; //输入错误则不计算结果,跳出函数
- }
- var result:Number = doCalculate( Num1, Num2, Operate );
- var operateNum:int = event.keyCode - 96; //数字0-9对应的keyCode分别为96-106,所以将keyCode减去96,转换为数字0-9
- trace( OperateName[operateNum] + "运算结果为:" + result );
- }
- }
- }
有经验的程序员习惯是把public方法放在前面,protected和private的方法依次排在其后,因为一个类中对整个工程起作用的部分仅是那些可被外界调用的public方法,别人要使用你这个类中实现的功能就只会关注你的public方法,比如在此类中我们放在最前面的public方法doCalculate(),它提供了计算器的功能,外界可以给他输入3个参数,前两个参数是参加运算的双方,第三个参数是运算符,在输入参数运行此函数后会返回一个计算结果,就像我们现实生活中用计算器进行计算一样方便。那么我们外部要想使用计算器类的这个doCalculate()计算方法,就只会关注此public方法,不关心它内部是怎样计算、怎样工作的。
接下来让我们看代码吧,看到init()中大部分都是在trace出一些提示的语言,就只有那句添加键盘侦听的语句是有意义的。那么在onKeyDown函数中的代码也非常容易理解,对应之前init函数中的提示:1键对应加法,2键对应减法等我们根据用户按下的按键来判断此刻用户希望执行什么运算,并给Operate 变量赋予相应的字符串值,此值对应doCalculate()函数中第三个参数的格式。最后我们将运算双方以及根据用户输入键得到的运算符Operate传入 doCalculate()方法,它会计算出结果并赋值给result变量,最后我们把结果result打印出来。
最后,我们编译一下代码并调试(快捷键F11),在控制台(Console)中可以看到打印出的结果。
【提示:若无法调试,则可以去下载Debug版本的flash player,对于Window用户,可以下载
Flash Player 10.1 ActiveX control content debugger (for IE) 这是给IE浏览器或集成了IE内核的浏览器(FireFox, TT等)上的Flash player插件用的
或者 Flash Player 10.1 Projector content debugger 这是给本地Flash Player使用的
默认情况下,Flash Builder会把编译结果包装成html并在运行或调试时以浏览器打开一个网页,我们的编译结果swf会在浏览器的Flash player插件中播放,此时就需要下载使用前者来进行浏览器播放情况下的调试。若你不想用网页打开swf,就右击工程目录,选择属性,或者直接从上方的菜单中打开工程-->属性 进入工程属性窗口,在ActionScript编译器(Compiler)选项卡下,找到“生成HTML包装文件”(Generator HTML wrapper file)单选框,并将其前面的钩钩去掉即可,此时,需要下载后者进行本地运行情况下的调试。
<ignore_js_op>
若在本地调试时会跳出警告框提示Flash Player不是Debug版本啥的并自动使用某个播放器来打开swf的话建议取消此播放器的自动关联播放swf文件功能。】