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;将所有具有相同…

使用window.postMessage实现跨域通信

JavaScript由于同源策略的限制,跨域通信一直是棘手的问题。当然解决方案也有很多&#xff1a; document.domainiframe的设置&#xff0c;应用于主域相同而子域不同&#xff1b;利用iframe和location.hash&#xff0c;数据直接暴露在了url中&#xff0c;数据容量和类型都有限Fla…

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

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

WinRAR 命令行简体中文说明

从命令行也可以运行 WinRAR 命令&#xff0c;常规的命令行语法描述如下:WinRAR - -命令 要 WinRAR 运行的字符组合代表功能。开关 切换操作指定类型&#xff0c;压缩强度&#xff0c;压缩文件类型&#xff0c;等等的定义。压缩文件 要处理的压缩文件名。文件 要处理的文件名。列…

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

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

SparkSession.read().csv()无法定位本地文件的问题

原因是spark有两个文件头 [file://]代表本地 [hdfs://]代表hdfs路径 如果路径没有文件头&#xff0c;spark会将该路径默认添加上"hdfs://" 所以如果要访问本地csv文件&#xff0c;需要确保路径前面有"file://" //java代码&#xff0c;告诉spark这是本地文件…

JavaScript的10种跨域共享的方法

在客户端编程语言中&#xff0c;如javascript和ActionScript&#xff0c;同源策略是一个很重要的安全理念&#xff0c;它在保证数据的安全性方面有着重要的意义。同源策略规定跨域之间的脚本是隔离的&#xff0c;一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。那…

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

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

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

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

接口码释义

1xx&#xff1a;信息&#xff0c;请求收到&#xff0c;继续处理 2xx&#xff1a;成功&#xff0c;行为被成功地接受、理解和采纳 3xx&#xff1a;重定向&#xff0c;为了完成请求&#xff0c;必须进一步执行的动作 4xx&#xff1a;客户端错误&#xff0c;请求包含语法错误或…

java读取文件内容,文件头有\ufeff

"\ufeff"是UTF-8 BOM编码的文件头&#xff0c;代表该文件按照什么字节顺序排序 调用java的工具类[ UnicodeInputStream ]即可解决这个问题 //第二个参数targetEncoding为null时在getDetectedEncoding方法中会自动检测编码类型 UnicodeInputStream unicodeInputStrea…

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 的博文都是一上来就罗…

孟宪会老师推荐的一部C#图解教程

Amazon五星级盛誉 C# 最新特性一览无余 数十年开发与教学经验的结晶 图、表和文字完美结合&#xff0c;最易学的C# 教程 本书详细信息&#xff1a;http://www.china-pub.com/43556 微软4大名著评选结果揭晓&#xff1a;http://www.china-pub.com/static07/0812/jsj_micrmingz_0…

Python数据分析Numpy库方法简介(三)

补充&#xff1a; np.ceil()向上取整 3.1向上取整是4 np.floor()向下取整 数组名.resize((m,n)) 重置行列 基础操作 np.random.randn()符合正态分布(钟行/高斯)的数据 矩阵的水平拼接 np.vstack((a,b)) 矩阵的垂直拼接 np.hstack((a,b)) 点阵积&#xff1a; np.dot(a,b)/ ab…

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;最受欢迎的微信小…

開發MOSS2007 Masterpage的一些經驗

一直在做MOSS平臺的Masterpage開發,碰到很多的問題,總結了一些經驗,特此記錄: masterpage的所有的ContentPlaceholder詳細解釋見以下網址:http://www.cnblogs.com/WinYoung/archive/2007/06/25/791766.html 1.如果應用masterpage以后IE狀態欄出現""網頁指令碼錯誤訊息…