分类: AS/Flex/AIR

这是一篇测试文章abc

这是一篇测试文章abc

Flash通过FlashVars接收外部参数

...
<param name="FlashVars" value="tag=as3"/>
<embed flashvars="tag=as3"/>
...

AS项目,或者Flash里:

stage.loaderInfo.parameters.tag

Flex3项目:

Application.application.parameters.tag

Flex4项目:

FlexGlobals.topLevelApplication.parameters.tag

备忘.

查看火兔照片的小玩意,暂且叫PictureLife吧。

这两天突然好玩做了这么个玩意,输入火兔网的帐号即可浏览该用户的所有照片。

地址:

http://app.foxling.cn/picturelife/

功能:

  • 鼠标拖动:左右滑动,向左滑动时,自动加载更多的照片(前提是还有更多照片…)
  • 鼠标点击空白区域:缩放到合适大小
  • 鼠标滚轮:放大,缩小显示区域
  • 鼠标点击单张小图:加载该大图,并且放大到原始尺寸。

预览图:

预览图1

预览图1

预览图2

预览图2

后续:

仓促弄出来玩玩,有待继续改进。

在Flex中继承ProgrammaticSkin类自定义皮肤

通过自定义类的方式创建皮肤,控制性更强,占用的内存更少。
ProgrammaticSkin类是外观元素的基类,它们通过编程方式来绘制自身。
关于ProgrammaticSkin类的更多信息,猛击这里:
http://www.airia.cn/ActionScript3API/livedocs/mx/skins/ProgrammaticSkin.html

自定义类

package skins
{
    import flash.display.GradientType;
    import flash.display.Graphics;

    import mx.skins.ProgrammaticSkin;

    public class CustomBG extends ProgrammaticSkin
    {

        public function CustomBG()
        {
            super();
        }

        override protected function updateDisplayList(w:Number, h:Number):void
        {
            super.updateDisplayList(w, h);

            var g:Graphics = graphics;
            var fillColors:Array = [0x191919,0x262626,0x191919];
            var fillAlphas:Array = [1.0,1.0,1.0];
            var fillRatios:Array = [0,127,255]

            g.clear();

            drawRoundRect(0, 0, w, h, 0, fillColors, fillAlphas,
                          horizontalGradientMatrix(0, 0, w, h), GradientType.LINEAR,fillRatios );
        }

        override public function get measuredWidth():Number
        {
            return 8;
        }

        override public function get measuredHeight():Number
        {
            return 8;
        }
    }

}

在CSS中使用ClassReference调用自定义类

.customBg
{
backgroundSize: “100%”;
backgroundImage: ClassReference(“skins.CustomBG”);
}

Flex 中可能导致内存泄露的地方

收集了不少的会导致内存泄露的情况:

事件监听:

对父级对象加了监听函数,会造成内存泄露,例:

override protected function mouseDownHandler(…):void
 {
    systemManager.addEventListener(“mouseUp”, mouseUpHandler);

......

解决:
在销毁对象的时候,remove掉这些监听,虽然弱引用也可以避免这些问题,但自己掌控感觉更好。

但以下几种情况不会造成内存泄露:

  • 弱引用:someObject.addEventListener(MouseClick.CLICK, handlerFunction, false, 0, true);
  • 对自己的引用:this.addEventListener(MouseClick.CLICK, handlerFunction);
  • 子对象的引用:
    private var childObject:UIComponent = new UIComponent;
    addChild(childObject);
    childObject.addEventListener(MouseEvent.CLICK, clickHandler);
    

总之…有addEventListener,就removeEventListener一下吧,要为自己做的事负责~哈哈

清除引用

remove掉子对象后并不会删除该对象,他还保留在内存中,应该将引用设置为null

removeChildren(obj);
obj = null;

阅读全文 »