ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...

     增强代码的可重用能力,从创建可重用的代码开始,可重用的代码则是通过从现有代码中重构加以封装,使其成为功能单一的可复用代码块。这句话笼统点说便是“封装”或“抽象”。

     在实际的编程开发中,要实现代码重用,而不是每次都去Copy同样的代码,我们可以创建一个方法,将代码封装在方法里然后在需要的地方调用它;如果每次执行的任务都有微小的变化,但又不想每次都复制那些代码修改一次,我们可以给方法传递参数让它适宜不同的情况。

     本文仍然属于基础篇文章,还是着重介绍ActinScript开发的基础知识,以及结合Adobe Flex CS3开发环境,介绍怎么使用Flex这样优秀的IDE环境去创建ActionScript程序,以及以类文件为基础去封装程序代码,使其成为可复用的代码等。

一、从创建项目开始

     本文主要是为后面面向对象开发打基础,相信大家都非常的熟悉VS2003/2005/2008中的一中或多种开发工具,那么熟悉开发环境对开发工作肯定是有益无害,还是不废话了,下面便从建立项目开始,近一步的熟悉Adobe Flex CS3开发环境。
        
          
     上图便是Flex创建项目向导,输入个项目名称然后选择项目存储的路径便OK。关于"Application server type"将在后续章节里介绍,然后点“下一步”便完成项目的创建。

     成功创建项目后,在项目的src下便有一个mxml文件(此文件在之前的文章里有介绍),查看其源视图可以看到:

1 <?xml version="1.0" encoding="utf-8"?>
2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
3     layout="absolute" >
4 
5 </mx:Application>
6 

     OK,此你看到的便是在Flex环境下开发ActionScript应用的开发模型结构,一个mxml对应的则是一个应用界面。那好,有了开发模型是不是应该放点代码进去呢?我们可以通过creationComplete属性为应用指定一个初始化方法:
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
 3     layout="absolute" creationComplete="Init()">
 4     <mx:Script>
 5         <![CDATA[
 6             internal function Init():void {
 7                 trace("应用程序的初始化方法");
 8             }
 9         ]]>
10     </mx:Script>
11 </mx:Application>
      

二、使用方法创建可重用代码

     现在有这样一个小的需求,我们需要计算两个数的和。OK,这个简单,拖两个文本输入框组件来输入数据和显示计算结果,在放置一个按扭来执行计算命令就OK。

          

     从上图上可以看出为按扭添加了click方法,click方法Init()的代码如下:

 1     <mx:Script>
 2         <![CDATA[
 3             internal function Init():void {
 4                 //trace("应用程序的初始化方法");
 5                 var a:int = int(txtA.text);
 6                 var b:int = int(txtB.text);
 7                 txtC.text = (a + b).toString();
 8             }
 9         ]]>
10     </mx:Script>

     通过上面的尝试,其实我们已经学会了使用方法去封装代码,那么如何达到可重用呢?在这里我就不多说了,和其他的语言一样,要达到灵活度重用度高,那便是对现有代码进行重构,比如上面代码我们可以进行一次重构让其成为真正能够重用的代码。首先要弄清楚功能需求,我们需要一个可重用的方法来计算两个数之和。OK,下面来重构吧!

 1     /*
 2      * 方法功能:计算两个数之和 
 3      * 参数说明:
 4      *        a:整型
 5      *        b:整型
 6      * 返回值:返回传递进来的两个整型参数之和(int)
 7      */
 8     private function Add(a:int, b:int):int {
 9         return a + b;
10     }


     通过上面的重构,抽象出了一个通用的可重用的方法,以后需要计算和的地方直接使用此方法便OK。如上我们边完成了通过方法来封装程序代码,以到达可重用的目的。

注意上面示例只是为了方便理解,实际编程开发中并非只是如此简单的封装,重构过程也不会这么简单。

 

三、养成使用类封装方法的好习惯

     在实际开发中,封装程序代码并非我们上面所演示的这样简单,需要更加集中、有序或是按照一定的规律来进行封装。通常都是使用类将方法封装在一起,而方法则封装实现具体业务功能的代码。OK,说到类,那我们就从创建一个类文件开始。
           

     图比文章更具有说服力,创建类文件的过程直接扫描上图便知。OK,继续下一张图:
                    

     通过上面这两步,便创建了一个名为Book的ActionScript类,相应的文件为Book.as,新建立的Book类的结构如下:

1 package ActionScript.OOP
2 {
3     public class Book
4     {
5         public function Book()
6         {
7         }
8     }
9 }


     在ActionScript中的编程方式和Java大同小异,同Java一样有包的概念,如同.net下的名称空间。如上代码快,不同的是方法的定义上多了一个关键字“function”。OK,下面我们为Book类添加两个方法,获取图书的名称和价格:

 1     private var price:Number = 55.00;
 2     private var name:String = "ActionScript开发手册";
 3         
 4     public function getBookName():String 
 5     {
 6         return this.name;
 7     }
 8         
 9     pulic function getBookPrice():Number 
10     {
11         return this.price;
12     }


     通过上面一步一步的努力劳动,已经熟练的掌握了使用类来封装方法。     

注意上面示例只是为了方便理解,实际编程开发中并非只是如此简单的封装,应该根据实际的业务逻辑来处理。

 

三、调用可重用代码的方法

     做事应该有始有终吧,有了上面的类,虽只是一个用于演示的半成品,总不能上前面的所有努力都付之东流吧,下面来调用下所封装的方法。
     要使用外部封装的类,在ActionScript中和Java中是一样的,通过 Import将外部包导入到当前项目就OK。如下图示:

             

     导入之前我们创建的Book类,通过实例化类对象便可以调用类中所封装的公共方法了,这点和C#/Java也是一样的。至此,使用Flex开发环境,通过类封装方法,使其成为可重用的代码就介绍到这里,更深入的知识点将在后续章节逐步介绍。

三、使用异常加强代码的健壮性

     ActionScritp 3.0中使用异常,和C#/Java一样的,这里就不做详细介绍。有兴趣的可以参考下面连接的文章。
     异常和异常处理(C#编程指南):http://msdn.microsoft.com/zh-cn/library/ms173160.aspx 。如果要了解和学习ActionScript 的各种异常类请查看文档。官方在线帮助文档地址请查看第本系列的第二篇文章,ActionScript 3.0 Step By Step系列(二):建立扎实的ActionScript 3.0语法基础

四、本文小结

     1、近一步熟悉Adobe Flex开发环境。

     2、在Flex下使用Action Class文件封装方法,使其成为可复用代码以及调用。

     3、ActionScript 3.0下的异常机制。

 

注:原创文章欢迎转载,本文版权归作者和博客园共有,转载务必注明文章出处。  

     作     者:Beniao

     文章出处:http://beniao.cnblogs.com/  或  http://www.cnblogs.com/

转载于:https://www.cnblogs.com/beniao/archive/2008/12/24/1359233.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

express利用nodemailer发送邮件(163邮箱)

Nodemailer 是一个简单易用的Node.js邮件发送组件 首先安装这个组件 npm install nodemailer --save安装之后&#xff0c;可以在某个get请求下&#xff0c;发送邮件&#xff0c;具体路由代码&#xff1a; const express require("express"); const nodemailer requ…

使用 Solid 私有化存储 IPFS 文件哈希值

背景 星际文件系统 IPFS&#xff08;InterPlanetary File System&#xff09;是一个面向全球的、点对点的分布式文件系统&#xff0c;目标是为了补充&#xff08;甚至是取代&#xff09;目前统治互联网的超文本传输协议&#xff08;HTTP&#xff09;&#xff0c;将所有具有相同…

appium启动app失败_Appium-Desktop Capability 配置及启动App演示

Appium-Desktop Capability配置介绍desired capability的功能是配置Appium会话。为什么要配置capability&#xff0c;目的就是为了告诉Appium服务器您想要自动化的平台和应用程序。Desired Capabilities是一组设置的键值对的集合&#xff0c;其中键对应设置的名称&#xff0c;而…

以Windows服务方式运行.NET Core程序

原文:以Windows服务方式运行.NET Core程序在之前一篇博客《以Windows服务方式运行ASP.NET Core程序》中我讲述了如何把ASP.NET Core程序作为Windows服务运行的方法&#xff0c;而今&#xff0c;我们又遇到了新的问题&#xff0c;那就是&#xff1a;我们的控制台程序&#xff0c…

好用的shell工具_精选5个酷毙的Python工具

来自&#xff1a;Python之禅工欲善其事必先利其器&#xff0c;一个好的工具能让起到事半功倍的效果&#xff0c;Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法&#xff0c;下面这几个工具给我的工作也带来了很多便利&#xff0c;推荐给追求美好事物的你。…

承载辉煌历史 畅想无线未来

看了JustDI的文章“手机也能当电脑用&#xff1f;&#xff0d;&#xff0d;谈谈未来智能手机操作系统的走向”&#xff0c;作为嵌入式爱好者&#xff0c;我也想谈谈自己的看法。首先&#xff0c;从网络发展的角度看&#xff0c;移动互联网的宽带化&#xff0c;宽带互联网的移动…

6款国内外SNS开源软件 搭建社交网站利器

SNS(Social Network Service)&#xff0c;有时称为社交网络&#xff0c;有时称为社会化网络&#xff0c;专指旨在帮助人们建立社会性网络的互联网应用服务。如果对SNS概念还很模糊&#xff0c;说到人人网、开心网你就明白了。 去年360圈、蚂蚁网接连关站给SNS前景蒙上一层阴影&…

aop实现原理_从宏观的实现原理和设计本质入手,带你理解 AOP 框架的原理

点击上方“Java知音”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;作者&#xff1a;FeelsChaoticjuejin.im/post/5c57b2d5e51d457ffd56ffbb前言本文将从另一个角度讲解 AOP&#xff0c;从宏观的实现原理和设计本质入手。大部分讲 AOP 的博文都是一上来就罗…

xxl-job源码分析

xxl-job源码分析 xxl-job 系统说明 安装 安装部署参考文档&#xff1a;分布式任务调度平台xxl-job 功能 定时调度、服务解耦、灵活控制跑批时间&#xff08;停止、开启、重新设定时间、手动触发&#xff09; XXL-JOB是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是…

定制jQuery File Upload为微博式单文件上传

原文链接&#xff1a;http://avnpc.com/pages/single-file-upload-component-by-jquery-file-upload jQuery File Upload是一个非常优秀的上传组件&#xff0c;主要使用了XHR作为上传方式&#xff0c;并且利用了相当多的现代浏览器功能&#xff0c;所以可以实现诸如批量上传、超…

vb趣味编程弹球小游戏_最好玩的微信小游戏集合,总有一款是你没玩过的

大家好&#xff0c;这里是小雅龙生活趣味时间&#xff0c;自从17年微信推出小游戏程序以来&#xff0c;微信小游戏行业可谓是炙手可热&#xff0c;知道2019年不断有许许多多的微信小游戏如雨后春笋般的生根发芽。下面就由我带大家来看看今年最好玩&#xff0c;最受欢迎的微信小…

Golang——垃圾回收GC(2)

1 垃圾回收中的重要概念 1.1 定义 In computer science, garbage collection (GC) is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the pro…

java gui框架_推荐!程序员整理的Java资源大全

构建这里搜集了用来构建应用程序的工具。Apache Maven&#xff1a;Maven使用声明进行构建并进行依赖管理&#xff0c;偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置&#xff0c;所以维护起来相当困难。Gradle&#xff1a;Gradle…

帆软报表(finereport)控件背景色更改

setTimeout(function() {$(.fr-trigger-btn-up).css({"background-color": "#003399" });}, 100); 转载于:https://www.cnblogs.com/Williamls/p/11571586.html

mybatis 大于_酸爽!IDEA 中这么玩 MyBatis,让编码速度飞起!

作者&#xff1a;Orsoncnblogs.com/java-class/p/6237564.html1. 搭建 MyBatis Generator 插件环境a. 添加插件依赖 pom.xmlb. 配置文件 generatorConfig.xmlc. 数据库配置文件 jdbc.propertiesd. 配置插件启动项2.项目实战a. 比如在一个项目 我们要删除某个小组下某个用户的信…

scatter函数_matplotlib.pyplot常用函数scatter讲解大全(三)

前言这篇文章再来总结一个常用画图函数scatter-散点图。参数常用参数示例import matplotlib.pyplot as plt import numpy as np#导入需要的包 datanp.random.multivariate_normal([0,1],[[1,0],[0,1]],200)#准备数据&#xff0c;二维正态分布plt.rcParams["axes.unicode_m…

c++万能头文件_初学Python,与C对比

✎背景学了一学年的C的基础&#xff0c;下学年开课Python&#xff0c;现在正在自学中...C也不是不学了&#xff0c;而是之前买了一本《CPrimer》在学校里&#xff0c;就准备先学一下Python&#xff0c;下学期利用自由时间接着学习C。这里分析了一下二者的优缺点&#xff0c;供大…

本地无法启动MySQL服务,报的错误:1067,进程意外终止---解决

原文链接&#xff1a;http://blog.csdn.net/shenhonglei1234/article/details/5928873 在本地计算机无法启动MYSQL服务错误1067进程意外终止 这种情况一般是my.ini文件配置出错了 首先找到这个文件&#xff1a; 默认安装路径 C:/Program Files/MySQL/MySQL Server 5.1/my.ini …

团队升级

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/yulongblog/blog/2988702

Css3: gradient背景渐变

Css3: gradient背景渐变 原文链接&#xff1a;http://kk073000.blog.163.com/blog/static/34826942012123111322691/ css3实现了背景渐变。 <gradient> [ <linear-gradient> | <radial-gradient> | <repeating-linear-gradient> | <repeating-r…