浏览器窗口尺寸改变时的图片自动重新定位

俗话说:拳不离手,曲不离口。学过的技能不用,放长了就生疏了,今天以前的同事问我:用户改变浏览器窗口尺寸时,flash中的图片如何重新定位于4个角上。花了近一刻钟才回忆想来:stage有Resize事件,呵呵
代码如下:
1.先把加载图片的逻辑封装一下
package  {  
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.display.Bitmap;
    import flash.events.IOErrorEvent;
    import flash.system.LoaderContext;
     
    public class LoadImage extends Sprite {
         
        private var _imgWidth:int;
        private var _imgHeight:int;
         
        public function LoadImage(url:String,imgWidth:int=380,imgHeight:int=305) {
             
            this._imgWidth = imgWidth;
            this._imgHeight = imgHeight;
             
            var _request:URLRequest = new URLRequest(url);
            var _loader:Loader = new Loader();
            var _lc:LoaderContext = new LoaderContext(true);
            _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);
            _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loadIO_Error);
            _loader.load(_request,_lc);
             
        }       
         
        private function loadComplete(e:Event):void
        {
            //trace("loadComplete");
            var li:LoaderInfo = e.currentTarget as LoaderInfo;
            var bmp:Bitmap = li.content as Bitmap;
            bmp.height = _imgHeight;
            bmp.width = _imgWidth;
            addChild(bmp);
        }
         
        private function loadIO_Error(e:IOErrorEvent):void
        {
            trace("load error!");
        }
    }   
}


2.主文档类
package  {
     
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
     
     
    public class ResizeDemo extends MovieClip {
         
        private var _top_left:LoadImage; //左上 的图片
        private var _top_right:LoadImage; //右上 的图片
        private var _bottom_left:LoadImage; //左下 的图片
        private var _bottom_right:LoadImage; //右下 的图片
        private var _center:LoadImage; //中心的图片
        private var _WIDTH:int; //舞台的宽度
        private var _HEIGHT:int; //舞台的高度
         
        public function ResizeDemo() {
            // constructor code
             
            if (stage)
            {
                init();
            }
            else
            {
                stage.addEventListener(Event.ADDED_TO_STAGE,init);
            }
        }
         
        private function init(e:Event=null)
        {
            stage.removeEventListener(Event.ADDED_TO_STAGE,init);
            stage.addEventListener(Event.RESIZE,reSizeHandler);
            stage.align = StageAlign.TOP_LEFT; 
            stage.scaleMode = StageScaleMode.NO_SCALE;
             
             
            //加载图片
            _top_left = new LoadImage("top_left.jpg",100,150);
            _top_right = new LoadImage("top_right.jpg",100,150);
            _bottom_left = new LoadImage("bottom_left.jpg",100,150);
            _bottom_right = new LoadImage("bottom_right.jpg",100,150);
            _center = new LoadImage("center.jpg",200,300);
             
             
            addChild(_top_left);
            addChild(_top_right);
            addChild(_bottom_left);
            addChild(_bottom_right);
            addChild(_center);
             
            adjustPosition();
             
             
        }
         
        private function reSizeHandler(e:Event=null)
        {
            adjustPosition();
        }
         
        //调整位置
        private function adjustPosition()
        {
            _WIDTH = stage.stageWidth;
            _HEIGHT = stage.stageHeight;
             
            trace("_WIDTH =",_WIDTH);
            trace("_HEIGHT =",_HEIGHT);
            trace("_top_left.width =",_top_left.width);
             
            //定位 左上的图片
            _top_left.x = _top_left.y = 0;
             
            //定位 右上的图片
            _top_right.x = _WIDTH - _top_left.width;
            _top_right.y = 0;
             
            //定位 左下的图片
            _bottom_left.x = 0;
            _bottom_left.y = _HEIGHT - _bottom_left.height;
             
            //定位 右下的图片
            _bottom_right.x = _WIDTH - _bottom_right.width;
            _bottom_right.y = _HEIGHT - _bottom_right.height;
             
            //定位中心的图片
            _center.x = (_WIDTH - _center.width)/2;
            _center.y = (_HEIGHT - _center.height)/2;
        }
         
    }
     
}

在线演示地址: http://img.24city.com/jimmy/resize/resizedemo.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值