- 浏览: 204555 次
- 性别:
- 来自: 上海
最新评论
-
sprite:
java -Xdebug -Xrunjdwp:transpor ...
izpack 调试 -
aosnowit:
这里有一套非常不错的 SparkSkin 主题皮肤,更新很频 ...
Flex Skin (Spark) -
sprite:
在windows 7下,需要用admin权限去运行cmd窗口, ...
izpack 调试 -
luhantu:
其实对于非常简单的背景色设置已经够用了……
Flex4 背景设置 -
clschen:
还有一个非主流的方式,直接设置opaqueBackground ...
Flex4 背景设置
文章列表
大家假想一下如果,你的类要继承一个类,还要实现一个接口,可是你发觉你继承的类和接口里面有两个同名的方法怎么办?你怎么区分它们??这就需要我们的内部类了。看下面的代码
InterfaceTest:
package com.mode.infa;
public interface InterfaceTest {
public void test();
}
DuplicateFunction:
package com.mode;
public class DuplicateFunction{
public void test() {
System.out ...
内部类可以使java也有用多继承的特点,这个特点非常重要,个人认为它是内部类存在的最大理由之一,正是由于他的存在使得Java的继承机制更加完善。
大家都知道Java只能继承一个类,它的多重继承在我们没有学习内部类之前是用接口来实现的。但使用接口有时候有很多不方便的地方。比如我们实现一个接口就必须实现它里面的所有方法。而有了内部类就不一样了。它可以使我们的类继承多个具体类或抽象类。大家看下面的例子。
RunClass:
package com.mode;
public class RunClass {
public void run()
{
System.out.p ...
对于隐藏性来说,平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息。可以看下面的例子
Interfa ...
1.定义
放在一个类的内部的类我们就叫内部类。
2.作用
a.内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 例子
b.内部类拥有外围类的所有元素的访问权限 例子
c.可是实现多重继承 例子
d.可以避免修改接口而实现同一个类中两种同名方法的调用 例子
3.种类
1)静态内部类 它相当于外部类的静态成员一样,使用static修饰的内部类,它隶属于外部类,使用起来相当于一个独立的外部类。
2)成员内部类 它相当于外部类普通的成员一样,隶属于外部类的具体对象,在定义它的时候,需要先创建外部类对象,再创 ...
门面模式个人觉得这个词起得非常形象化。门面嘛也就是一个窗口,对外隐藏子系统的操作,让你可以只能一个窗口打交道就成了。
打个比方,你把饭喂到肚子里,那么多负责的步骤帮你消化分解排泄你都不用操心了,对外接口就一张嘴,给我嘴打打交道就成了,多省事。要不然你吃完饭还要开动胃帮你消化,开动肠子帮你吸收,开动xx帮你拉拉,那你一天还用不用干活了?
神马?这个跟代理模式有点像?好吧,代理模式也是隐藏实现细节并帮你做一些额外的服务,但是代理模式是你至少的知道你想找谁提供服务,只是你不想找或者找他比较麻烦。但是门面模式是直接把子系统的内容隐藏了,你都不知道门面后面都要访问谁,怎么去访问。
门面模式 ...
策略模式就是定义了算法家族,分别封装起来,让它们之间可以互相替换。 此模式让算法的变化,不会影响到使用算法的客户。也就是把一系列的算法抽象出来做一个基类,实际的算法继承次基类分别实现。在使用时,可以随意使用这些真正的算法实例。
UML类图示例:
这个模式涉及到三个角色:
● 环境(Context)角色:持有一个Strategy的引用。
● 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
● 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
缺点:客户端必须知道所有 ...
Flex的动画效果由一个工厂类(Factory)和一个实例类(Instance)构成。
工厂类用来处理事件、控制动画,它的名称就是效果的名称,如Zoom。
实例类则用来实现动画效果,如ZoomInstance。
通常我们在应用程序中创建一个工厂类的实例,设置必要的参数,然后将该实例与触发器关联。当触发器被触发或调用play()方法时,实例去播放所需效果,执行结束后,该实例会被销毁,如果一个效果对应多个目标对象,每一个目标对象都会有一个自己的实例。
实例类的命名规则为效果名+Instance。如之前定义的工厂类名为Zoom,那么实例类名就是ZoomInsta ...
Flex的绑定机制也是一个亮点,对于数据和显示分离提供很好的支持。在Flex绑定分为xml 绑定和纯As绑定。
这里不讲原理只讲用法,欲了解原理可以查看adobe官方文档,非常详细。
BindingUtils 其实是对ChangeWatcher的一个封装类,可以参考BindingUtils的两个方法的源码。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
...
对于基本类型,无所谓深浅复制。
深浅复制只要是对于引用类型来说的。一句话概括来说就是:引用类型是否指向了新的内存地址。
例如对于数组来说,因为数组不是类型化数组,所以你可以往数组里面放置基本类型数据和引用类型数据,对于包含引用类型的数据的数组,讨论才有意义。
var array:Array = [1,2,3,{name:"kenny"}];
var shallowCopyArray:Array = array.concat();
var cloneArray:Array = ObjectUtil.clone(array) as Array;
对于浅复制, ...
这几天做项目重构,发现一个蹊跷的问题,A类基础B类,本来不应该基础B中的Xml定义的原件的,但是却发现继承了!最重要的是我A类还需要添加B类,这样导致B类的内容出现两次,而且仅仅是states状态下B的那个组件出现了!刚开始怎么也想不明白怎么会出现两次,知道一步步调试才发现原来是States在搞怪。
当你在Flex的Application或者自定义控件中设置了States属性后,等到控件初始化时,States数组中包的State对象中有个overrides的属性,它里面就包含了这个状态下的所有要显示的对象(包括组件,style等)。所以如果你继承了B,你就继承了B的States数组,你初始 ...
代理模式和装饰器模式虽然概念上区别很大,但是在实现时却又比较相似。
代理模式从概念上讲,就是我想访问一个服务,但是我却不需要知道真正给我提供服务的对象,我只要访问能提供给我服务的代理对象就可以了。
装饰器模式从概念上讲,就是要装饰一个对象,只要把这个对象通过装饰器的构造函数传入,装饰器会做一些额外的装饰。因为装饰器也实现了对象实现的接口,所以就可以像操作对象一样操作装饰器。
代理模式的类图:
Interface Subject:
package com.mode.interfaces
{
public interface Subject
{
fun ...
对于Flex4来讲,可以自定义skin,然后就可以做出来很漂亮的网格背景。
APP:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" ...
在Flex中可以通过Loader和SWFLoader来进行swf和图像文件的加载。但是两者又有一些不同。
1. Loader继承自Loader->DisplayObjectContainer-> InteractiveObject ->DisplayObject,但Loader 类会覆盖其继承的以下方法,因为 Loader 对象只能有一个 ...
如果要说这个已经是一个非常长的篇幅,网上七零八落的介绍也非常多,我在也不会多说,如果想了解,可以参考LoaderContext 的applicationDomain的介绍,讲解的也蛮详细的。如果还是不太明白,在网上发现一篇讲的蛮不错的文章,大家可以看看:深入理解Flash的沙箱 – Application Domains。这里面讲的非常详细,希望对大家能有所帮助。
我在这里要做的是对以上这些理论的验证,把他们放到不同的applicationDomain下来测试。大家可以把代码拿下来改变一下看看有何效果。
<?xml version="1.0" encoding= ...
Flex提供了两种方法截图,一个是BitmapData的draw 方法,另一个是ImageSnapshot 提供的captureImage和captureBitmapData静态方法,其实这两种方法没有什么本质的区别,因为ImageSnapshot提供的这些方法本质上也是通过BitmapData的draw方法来截图的。
如果非要要说有什么区别的话,那就是ImageSnapShot提供的这些方法你没有办法设置要截取多大,它会自动根据你传入的对象来算长宽。而BitmapData你可以再创建的时候指定长宽,那样你就可以截图想要的长宽了。
下面的例子是我做的一些测试代码,仅供参考。
<?x ...