写as已经有3个月多了,第三个项目进行中。
也正是从第三个项目开始,抛弃了臃肿缓慢的mx库,只用纯flash库,开发环境也转到了FlashDevelop。

通过这几月的时间,我终于对OO有了一点点认识。虽然之前我写了3年的C#代码,但都是自己小打小闹,没有上升到项目的程度。OO还是不OO都是自己说了算。

以下仅为我对OO的一点点小小的认识,不足之处还请大侠们指出。

私有字段:用于储存状态。
属性:获取或修改状态,在修改前可以进行验证,改变状态的同时,意味着发生行为(必要时)。可以设置访问权限:只读是最常见的一种。

as中最核心的类应该就是显示对象类了吧。Sprite做为最轻量级的容器当然是最常被使用的对象之一。
但是,相信很多人都发现仅仅通过属性和Sprite自身的方法来写代码实在是太麻烦了。
如果用过JQuery,你一定知道连缀,极大的减少代码量及出错可能性。

由于as3不支持泛型,也不像DOM那么简单可以全部包装成JQuery对象,于是我想了一个折中的办法来返回自己用来实现连缀。那就是--接口。

仿mx,写一个类叫Canvas,继承自Sprite,实现ICanvas接口。其他所有的显示对象均继承自Canvas即可。

public interface ICanvas

    {

        //部分

        function addChildEx(child : DisplayObject, x : Object = null, y : Object = null) : ICanvas;               
        function appendTo(parent : DisplayObjectContainer, x : Object = null, y : Object = null) : ICanvas;       
        function removeAllChildren() : ICanvas;       
        function removeChildEx(child : DisplayObject) : ICanvas;                                       
        function setHandCursor(handCursor : Boolean) : ICanvas;                       
        function hide() : ICanvas;       
        function show() : ICanvas;       
        function setPosition(x : Number, y : Number) : ICanvas;       
        function setSize(width : Object = null, height : Object = null) : ICanvas;       
        function setScale(scaleX : Number = 1.0, scaleY : Number = 1.0) : ICanvas;       
        function onEvent(event : String, func : Function) : ICanvas;
        function click(onClick : Function) : ICanvas;
    }

这样的话使用起来就很方便了。
var canvas : Canvas = new Canvas();
canvas.setSize(100, 100)
      .show()
      .appendTo(this, 20, 20)
      .setHandCursor(true)
      .click(function(e : Event) : void {
           canvas.hide();
      });
 posted on 2009-12-13 15:18  Paul Xi  阅读(157)  评论(0编辑  收藏  举报