但是虽然我编写了不少Flex程序,对 AS3中的强制类型转换还是不太清楚,以前AS中是这样进行强制类型转换的:假设有一个类叫做Class1,我们声明了一个它的对象 c1,如果想要将它转换成Class2类型...,只要这样写: Class2(c1); 在AS3中你依然可以这样写,但是AS3 中提供了一个新的操作符: as ,并且推荐使用as 进行强制转换,上述的例子用 as 操作符实现就是这样: c1 as Class2...; 使用 as 操作符有几个好处: 1.它的效果和第一种方法是一样的。...比如,假如你想要将一个String 类型的字符串 str 转换成 Number 类型的数字 num 时,可能想要这样写: num = str as Number; 这样写是没有用的,你只能通过第一种方法来达到强制转换的目的...Null 类型的 ActionScript3.0测试如下: var b:Number; trace(typeof 123); //number trace(typeof "123"); //string
ActionScript中的vector和array Array: The Array class lets you access and manipulate arrays....尽管Actionscript允许你把Array当作关联数组用,这样的话你就不能用Array类提供的方法或者属性了。...ActionScript 3.0 中可用的另一种索引数组类型为 Vector 类。Vector 实例是“指定类型的数组”,这表示 Vector 实例中的所有元素始终具有同一数据类型。...这表示 Vector 包含的元素数不能更改。 对 Vector 的元素的访问需要接受范围检查。绝对不能从大于最后一个元素索引 (length - 1) 的索引中读取值。...这类错误的例子包括将数据类型错误的值分配给 Vector 或从 Vector 中读取值时使用错误的数据类型。
三十年弹指一挥间,但是仍旧有很多 foxer 对 OOP(面向对象) 这个概念懵懵懂懂。 OOP 是 VFP 中一个非常重要的概念。核心概念就是类和对象。而这些,在 VFP 中是天然存在的。...假设你完全不懂什么是 OOP,但是仍旧可以使用 VFP 编写可运行的应用程序。...它不像 C# 这样的后来者,都存储在可见的物理 dll 文件中(例如,C# 中的超类 Object 存储在 System.Runtime.dll 中,而 Form 类存储在 System.Windows.Forms.dll...所以,“类”隐藏在 VFP 中。而“对象”,也就是类实例,也就是应用程序中的各种可视/非可视的对象,就是一个个的按钮等控件,或者 timer 控件。 VFP 中一个强大的功能就是可以创建自定义类。...因此,我才会强调,如果理解了 VFP 的 OOP,X# 的学习几乎无明显的学习曲线。 但是,仅仅掌握这些技术就足够了吗? 实质上,OOP 重要的不是技术,而是思想。
ActionScript3.0,并且建立起类似于java swing的类库和相应component(组件)。...Flex与Flash的关系 Flash并非只是一个单纯的矢量动画创作工具,而是一个凭借脚本语言ActionScript在功能和定位上不断演变的网络应用开发工具。...虽然Flex和Flash有众多的相似点,但是不同之处仍然很多 1.尽管公用ActionScript,但是使用的库并不完全相同,更合适的说法是两者使用着两套具有极大“功能重叠”范围的库。 ...3.Flash只能以ActionScript脚本的形式开发(舞台被关联到一个称之为 document class的类里),另外舞台元素也是可以绑定脚本的,不过从软件工程的角度讲不建议这样用,Flex还可以使用称作...mxml的标记语言来描述应用的外观和行为,mxml中可以直接嵌入ActionScript脚本。
但是,Python 中有一种方法,能够让程序中的对象更接近“封装”。...根据这些需要,再次修改 mypassword.py 文件中的代码。...实例的宽度和长度,分别用属性 rect.width 和 rect.height 得到,那么面积,也应该是实例的属性,不应该是方法。所以用 rect.area() 计算面积,本身就不很“OOP”。...如果用 rect.area 这样的属性形式得到实例的面积,那才符合 OOP 思想,并体现着 Python 的优雅,更蕴含着开发者的智慧。...它不仅能能实现“属性”的读、写,还能实现删除功能。下面的示例中,读者进一步体会 @property 的作用。
Adobe官方并没有"泛型数组"的叫法,这是我自己对Vector的叫法(有点标题党),不过Vector在使用上确实跟c#中的泛型数组有些相似之处。...我们知道:ActionScript3.0中的Array数组可以存放多种类型,甚至在同一个Array数组中,可以同时存入String,Object,Number......,但其实我们在实际开发中,通常一个数组中所保存的元素类型都是一致的,为了改进这种情况下的效率,AS3.0新增了一个Vector类。...它强制要求数组中的每个元素都必须是同样的类型,从而省去了“装箱”、“拆箱”之类的操作,提高了性能。...下面这一段测试代码演示了Vector与Array的性能差异: var count:uint=50000; var v:Vector.=new Vector.
scala中与java的接口最接近的概念是trait,见下面的代码: package yjmyzz object App { def main(args: Array[String]) {...可以看出trait与java中interface的异同,相同的是如果把trait单纯当接口来用,trait中只需要定义方法签名即可,然后由"子类"来实现。...不同的是,scala中的trait里也可以有方法实现!...(这也是为什么关键字不叫interface,而是叫trait的原因吧) trait与java中的接口还有一个明显的区别,trait可以继承自类,java中的interface可是不允许继承自class的...关于trait,小结一下: 1、trait"类似"(注:仅仅只是类似)java中的接口,可以只定义方法签名,交由子类去实现 2、trait中也可以有具体的方法实现 3、trait可以继承自trait,也可以继承自
用面向对象的风格写 shell,原文在这简介使用方法: 创建对象:new 参数... 使用对象:.... 参数...我感觉实现的不是太好,成员函数值都变成全局的了;不过我自己也没动力去改它。...${class} \"\$*\" || true"}代码解释看了半天,看的我晕头转向,记录几个自己不熟的点:为什么用 eval 来定义 varlist/funclist:是为了处理间接变量的引用,因为...shell 没法嵌套使用变量,比如:${${a}} 是不行的比如处理 \$CLASS_${class}_FUNCTIONS 时,需要先拼接变量名,再求值,但是用 eval 可以方便的做到这一点;for...... in 一个空白分开的字符串在 zsh 中不支持除非做一些设置;最好还是放到数组里再遍历
首先要习惯AS3.0的几个BT约定: 1.一个.as文件中,只能定义一个类 2.类名称必须与.as的文件名相同 3.类定义中必须要有package包声明 4.一个类最多只能有一个构造函数 5.包package...另外:做为符合ECMA规范的语言,ActionScript同样具有类似JavaScript的动态语言能力,我们把Human.cs再改一下: package { public dynamic class...undefined 如果一个类不想被继承,可以用final关键字标识,通常可以把一些辅助方法以static方式定义在final标识的类中,构成自己的工具类库(有点象c#中的静态类) package {...} } } 最后看下原型链prototype:在javascript中正是得益于prototype才实现了很多惊人的应用,同样在as3.0中也存在原型链,所有动态属性的继承都可以通过原型继承实现,不过要注意的是...; } d.Swim(); //请先将上一段代码中的Duck类定义加上dynamic关键字,否则本行代码无法执行
1,打开FlashCS,新建一个ActionScript的Fla文件。 2,在库面板ctrl+F8,新建一个组件,名称为Door,类型为影片剪辑,并为as导出....之后,绘制一个 类似门的图形. 3,在库面板里会出现Door组件,右键点击,导出为swc文件即可。...在Flashbuild中新建AS工程,在as文件中如下使用: protected var door:Door= new Door(); addChild(door) 编译AS工程即可看到该组件。...一般情况不会这么简单的界面,可以在Door组件中继续添加其他的控件,比如按钮之类的; 如果要在as工程中操作该按钮,需要在FlashCS中给该组件设置一个实例名,在As工程中即可使用。
python的OOP机制 在Python中,实际上一切都是对象,我们使用的内置数据类型,本质上也是类的实例化。...除此之外,python的OOP模型基本就是处理内置类型的函数。 OOP不仅是一门技术,更是一种经验。...因为OOP不是在所有场景下都优于POP(Procedure-Oriented Programmin) python是一门一致性非常好的语言,大多数使用OOP的方式,都可以统一表达为: object.attribute...在图中,w属性只在C3中出现了。因此通过搜索将I2.w解析为C3.w,用OOP的术语来讲就是“I2从C3继承了属性w”。...OOP是关于代码重用 类所支持的代码重用方式是python中其它方式难以提供的,事实上,代码重用也是OOP最重要的目的。通过类,我们可以定制现有的代码来实现需求。
OOP面向对象的思维: pay1:封装 A.避免使用非法数据赋值 B.保证数据的完整性 C.避免类内部发生修改的时候,导致整个程序的修改 pay2:继承 A.继承模拟了现实世界的关系...,OOP中强调一切皆对象,这符合我们面向对象的编程思考方向 B.继承实现了代码的复用,这在例子中我们已经有所体会,合理地使用继承,会使我们的代码更加简洁 C.继承使得程序结构清晰,子类和父类的层次结构更清晰...,对于同一个消息(方法的调用)做出不同响应的行为方式 pay4:接口 A.接口是对继承单根性的扩展:请你回想一个我们在第六章的继承中的问题,在C#中,一个子类可以继承多个父类吗?...根据我们学习的知识,这是不可以的。但 是接口可以说是充某种程度上实现了多重继承的功能。在C#中,一个类虽然不能实现多重继承,但是一个类可以实现多个接口。...pay5:序列化和反射 A.我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法
JavaScript中setTimeout方法接受的参数只有两个,而ActionScript3却可以有多个。...javascript"> setTimeout(function() { alert(arguments.length); }, 1 * 3000, 1, 2, 3); 显示的结果为...0 ActionScript3.0的代码: setTimeout(function(a:int, b:int, c:int):void { trace(arguments.length, a,...b, c); }, 3 * 1000, 1, 2, 3); 控制台上打印得到的结果:3 1 2 3,也就是as3的setTimeout支持参数传递。
检测下载资源的平均速度,思路大致如下: 监听下载完成事件后,用总字节数/总时间,即可得到相应的下载速度 公式: speed = (byteTotal/1024)/(endTime-startTime),...这个应该算是平均速度 监测下载的进度: 公式: procress = bytesLoaded/bytesTotal 在监听加载完成事件中,如果使用的是flash.net.URLLoader...加载,获取下载文件总字节数:URLLoader(evt.target).bytesTotal; 如果使用的是flash.display.Loader,需要监听loader的contentLoaderInfo...事件 ,使用evt.currentTarget.bytesTotal可获取下载文件的总字节数 完整的实例地址在这里下载: as3测试文件下载速度
ActionScript和JavaScript的事件处理机制处理机制几乎完全相同,所不同的主要是ActionScript的事件处理机制还提供了一个 事件对象。...在ActionScript中,所有的事件的起点都是一个通用的事件对象,其他事件通过继承该通用的事件对象添加其它的信息。...事件对象提供的信息一般都会包括: 事件来源 数据引用 事件的类型 下面是示例程序: <?xml version="1.0" encoding="utf-8"?...23" y="10" width="353" click="clickHandler(event)"/> 事件对象具有 可重用的优点...,事件处理程序只要使用它,就能访问到触发事件的组件,以及事件的类型。
RDD设计背景 RDD被设计用来减少IO出现的,提供了一中抽象的数据结构,不用担心的底层数据的分布式特性。只需将具体的应用逻辑将一些列转换进行处理。不同的RDD之间的转换操作形成依实现管道话。...RDD提供的是一种高度受限的共享内存模型,既RDD是只读的记录分区的集合,不能直接修改,只能给予文档sing的物理存储中的数据来创建RDD,或者是从其他RDD操作上执行转换操作得到新的RDD。...RDD在操作中是属于惰性调用,只有到达‘’行动‘’这个操作之后,才会开始进行真正的计算。...但是由于RDD在设计中数据至刻度,不可更改,这就造成我们必须进行RDD的转换,将父RDD转换成子RDD。...Spark在运行过程中,是分析各个阶段的RDD形成DAG操作,在通过分析各个RDD之间的依赖关系来决定如何划分阶段。
·路由:在URL中采用#号来作为当前视图的地址,改变#号后的参数,页面并不会重载。...单页Web应用(single page web application,SPA)是当今网站开发技术的弄潮儿,很多传统网站都在或者已经转型为单页Web应用,新的单页Web应用网站(包括移动平台上的)也如雨后春笋般涌现在人们的面前...单页web应用开发流程 用循环的视角审视Web应用开发 框定一个一致的SPA图形用户界面(GUI)和模型 将SPA的原则带回服务器端 聚集于对合适的应用进行早期SPA开发 SPA...SPA的主要目标是围绕着Web 2.0页面时间交互原则重构Web应用,以便体验可容易地转化到多个设备中,并对用户有效。...这会产生一种要对应用服务器进行重构的诱因,其目的是为了以1:1的比例来支持SPA。就最大程度上而言,该模型应该让自己的变量及命名空间本地化,并通过应用的服务器端与其他SPA交互。
ISP中的Demosaic是用来做什么的? 我们平时所看到的彩色图像每个像素由三个分量组成,分别为红(R)绿(G)蓝(B)。...而CMOS传感器,其输出的数据格式为每个像素点只有一个颜色分量,称为Bayer数据。 这就需要我们对其进行进一步处理以恢复出缺失的两个分量,这一过程就叫做Demosaic。 整个流程如下:
简单说,一个对象调用了它所"拥有"的方法,那么,这个方法中的 this 将指向这个对象(对象属性引用链中只有上一层或者说最后一层才在调用位置中起作用,例:a.b.c.func(),func 中的 this...,那么实际上对象中的属性持有的只是存在栈内存里函数的地址引用。...); } var obj = { a: 0 }; var o = { a: 2 }; var newFunc = func.bind(obj); newFunc.apply(o); //0 为了解决灵活性的问题...new 绑定 传统语言中,构造函数是类中的一些特殊方法,使用 new 初始化类时会调用类中的构造函数。而 js 中的所谓"构造函数"其实只是普通的函数,它们不属于某个类,也不会实例化一个类。...实际上 js 中并不存在构造函数,只有对于函数的构造调用。
在本教程中,我们将了解内存泄漏的潜在原因是什么,如何在运行时识别它们,以及如何在我们的应用程序中处理它们。 2....Java中内存泄漏类型 在任何应用程序中,数不清的原因可能导致内存泄漏。在本节中,我们将讨论最常见的问题。...这会占用内存并在我们的应用程序中造成重大内存泄漏。 JVM 1.6中这种情况的PermGen在VisualVM中看起来像这样: ?...请查看我们的 Java Profilers指南, 了解不同类型的分析器,如Mission Control,JProfiler,YourKit,Java VisualVM和Netbeans Profiler...使用java.lang.ref包,我们使用对象的特殊引用,而不是直接引用对象,这些对象可以很容易地进行垃圾回收。 引用队列旨在让我们了解垃圾收集器执行的操作。
领取专属 10元无门槛券
手把手带您无忧上云