首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ActionScript 3重构图像加载器

ActionScript 3重构图像加载器
EN

Stack Overflow用户
提问于 2009-09-28 19:57:27
回答 2查看 353关注 0票数 0

我在ActionScript3中有以下用于加载图像的代码:

代码语言:javascript
运行
复制
// Create the image areas
    var imageArea1 = new imageArea();
    var imageArea2 = new imageArea();
    var imageArea3 = new imageArea();
    var imageArea4 = new imageArea();
    var imageArea5 = new imageArea();

    var image1;
    var image2; 
    var image3; 
    var image4; 
    var image5;

    addChild(imageArea1);
    addChild(imageArea2);
    addChild(imageArea3);
    addChild(imageArea4);
    addChild(imageArea5);

    // Image1
    // function to load images to the page
    function loadImage1(url:String):void {
        image1 = new Loader();
        image1.load(new URLRequest(url));
        image1.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded1); 
    }

    //Callback event after image has been loaded.
    function imageLoaded1(e:Event):void { 
        // Load Image 
        imageArea1.addChild(image1);//display the photo
        //trace ('width:'+image1.width,' height:'+image1.height);
        image1.y = (stageHeight-image1.height);
        //trace(image1.y);
        var otherindex = getChildIndex(myBackground)
        setChildIndex(imageArea1,otherindex + 1);
    }

从外观上看,我必须为每个图像复制和粘贴loadImage1和imageLoaded1函数。理想情况下,我希望以某种方式将参数传递给.addEventListener函数。

我如何重构它,使我不必复制和粘贴每个图像的函数,这似乎是重复的。

EN

回答 2

Stack Overflow用户

发布于 2009-09-28 20:09:09

我认为最简单的方法是将imageX作为参数添加:

代码语言:javascript
运行
复制
function loadImage(url:String, imageObj:Object):void {
    imageObj = new Loader();
    imageObj.load(new URLRequest(url));
    imageObj.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded1); 
}

这对你有好处吗?我希望它会:)

票数 0
EN

Stack Overflow用户

发布于 2009-09-29 00:42:40

试试这个(我还没有测试过它,但是如果可以编译它,它应该可以工作--不要忘记正确的imports ;-) ):

代码语言:javascript
运行
复制
var imageURLs:Array = ['blah.png', 'blah2.png', 'foo.png'];
var imageLoaders:Array = new Array();
var imageAreas:Array = new Array();

for each (var url:String in imageURLs) {
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
    loader.load(new URLRequest(url));

    imageLoaders.push(loader);

    var theImageArea:imageArea = new imageArea();
    addChild(theImageArea);
    imageAreas.push(theImageArea);
}

function imageLoaded(e:Event):void
{
    var loader:Loader = Loader(e.target.loader);

    var index:int = imageLoaders.indexOf(loader);
    imageAreas[index].addChild(loader);

    loader.y = (stageHeight - loader.height);

    var otherChildIndex:int = getChildIndex(myBackground);
    setChildIndex(imageAreas[index], otherChildIndex + 1);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1489040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档