当前位置:主页   - 电脑 - 图形图像 - Flash
Flash教程:加载图片按比例显示的实现方法
来源:网络   作者:   更新时间:2012-05-06
收藏此页】    【字号    】    【打印】    【关闭

  本文示例源代码或素材下载

  大多数情况下加载的图片要不就是按统一尺寸修改为同样的长与宽,要不就不管外部图片大小导入后都统一缩放到同一长和宽;但有些时候可能需要保持原始图片的长宽比例进行显示,今天没事做了个简单的实例,因此没有加特效.只适合我等初学者.

  代码如下:

stop();
//创建一个新的电影实例,用于侦听事件内的载体
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
//初始图片数
var i:Number = 1;
//图片的宽度与高度设置
var picWidth:Number = Stage.width-10;
var picHeigh:Number = Stage.height-10;
//存贮从导入的外部图片宽度与高度的数组
var outImgWidth:Array = new Array();
var outImgHeight:Array = new Array();
//创建一个侦听事件和对象,用于检查和导入外部图片的数据
var myMCL0:MovieClipLoader = new MovieClipLoader();
var myObject0:Object = new Object();
myObject0.onLoadError = function(target_mc:MovieClip) { //检查外部总图片数没有了时,导入并显示第一张图片
    myMCL0.removeListener(myObject0);
    i = 1;
    myMCL.loadClip("imgs/1.jpg", mc);
};
myObject0.onLoadInit = function(target_mc:MovieClip) { // .............以下是关键语句部分............
    //从外部导入的图片宽度与高度分别存贮到对应的数组中
    outImgWidth.push(target_mc._width);
    outImgHeight.push(target_mc._height);
    //设定一个图片数从0开始计数,用于数组定位
    var j:Number = Number(i-1);
    //设定两个临时变量,存贮导入的图片原本的宽度与高度
    var tempWidth:Number = outImgWidth[j];
    var tempHeight:Number = outImgHeight[j];
    var W_H:Number = Math.floor(tempHeight*picWidth/tempWidth);
    var H_W:Number = Math.floor(tempWidth*picHeigh/tempHeight);
    //如果导入的图片的原本宽度大于高度,同时宽度大于picWidth时
    if (tempWidth>tempHeight && tempWidth>picWidth) {
        //宽度大于高度时
        //首先删除数组中最后一元素
        outImgWidth.pop();
        outImgHeight.pop();
        //如果折算后的高度和宽度都小于显示高度时
        if (W_H<picHeigh && W_H<picWidth) {
            //再为数组增加一个元素,目的是修改数组使宽度和高度都符合显示要求
            outImgWidth.push(picWidth);
            outImgHeight.push(W_H);
            //如果折算后的高度大于或等于显示高度时
        } else {
            //再为数组增加一个元素,目的是修改数组使宽度和高度都符合显示要求
            outImgWidth.push(H_W);
            outImgHeight.push(picHeigh);
        }
    }
    //如果导入的图片原本的高度大于宽度,同时高度大于picHeigh时                                                                             
    if (tempHeight>tempWidth && tempHeight>picHeigh) {
        //宽度小于高度时
        //首先删除数组中最后一元素
        outImgWidth.pop();
        outImgHeight.pop();
        //再为数组增加一个元素,目的是修改数组使宽度和高度都符合显示要求
        outImgWidth.push(H_W);
        outImgHeight.push(picHeigh);
    }
    //如果导入的图片原本的宽度等于高度,而且是等于或超过舞台上的那个像框尺寸时                                                                             
    if (tempWidth == tempHeight && tempWidth>=picWidth) {
        //宽度等于高度时
        //首先删除数组中最后一元素
        outImgWidth.pop();
        outImgHeight.pop();
        //再为数组增加一个元素,目的是修改数组使宽度和高度都符合显示要求
        outImgWidth.push(picHeigh);
        outImgHeight.push(picHeigh);
    }
    i++;
    myMCL0.loadClip("imgs/"+i+".jpg", mc); 
};
myMCL0.loadClip("imgs/"+i+".jpg", mc);  //导入外部图片
myMCL0.addListener(myObject0);
//
var myMCL:MovieClipLoader = new MovieClipLoader();
var myObject:Object = new Object();
myObject.onLoadInit = function(target:MovieClip) { //初始化图片尺寸和居中
    var j:Number = Number(i-1);
    target._width = outImgWidth[j];
    target._height = outImgHeight[j];
    target._x = Stage.width/2-target._width/2;
    target._y = Stage.height/2-target._height/2;
};
myMCL.addListener(myObject);
var keyListener_obj:Object = new Object(); //侦听是否按左右方向键,更换图片
keyListener_obj.onKeyDown = function() {
    switch (Key.getCode()) {
    case Key.RIGHT :
        i++;
        if (i>=outImgWidth.length) {
            i = outImgWidth.length;
        }
        myMCL.loadClip("imgs/"+i+".jpg", mc);
        break;
    case Key.LEFT :
        i--;
        if (i<=1) {
            i = 1;
        }
        myMCL.loadClip("imgs/"+i+".jpg", mc);
    }
};
Key.addListener(keyListener_obj);

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明