Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何添加循环URL请求图像并将其添加到1个视口?_Actionscript 3_Flash_Actionscript - Fatal编程技术网

Actionscript 3 如何添加循环URL请求图像并将其添加到1个视口?

Actionscript 3 如何添加循环URL请求图像并将其添加到1个视口?,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我尝试循环(通过URLRequest从加载程序添加图像),图像被添加到contentHolder,然后我将contentHolder中的所有图像放置到视口中。但现在我必须把“将图像添加到视口”步骤放在循环中,所以它会产生一个问题,即每个循环都会添加一个视口。所以10个视口相互重叠。我在调试模式下对它进行了测试,当加载第一个图像时,我可以快速滑动它,因为视口有一个滚动窗格,然后添加第二个图像,我可以滑动该图像,然后在顶部添加第三个图像,等等 但是如果我将addholder-to-viewport步

我尝试循环(通过URLRequest从加载程序添加图像),图像被添加到contentHolder,然后我将contentHolder中的所有图像放置到视口中。但现在我必须把“将图像添加到视口”步骤放在循环中,所以它会产生一个问题,即每个循环都会添加一个视口。所以10个视口相互重叠。我在调试模式下对它进行了测试,当加载第一个图像时,我可以快速滑动它,因为视口有一个滚动窗格,然后添加第二个图像,我可以滑动该图像,然后在顶部添加第三个图像,等等

但是如果我将addholder-to-viewport步骤放在循环之外,则会出现错误#2007:参数child必须为非null,我不知道该怎么办。请帮忙,谢谢你的时间!我已经试了6个小时了

错误出现在line viewport.addChild(_contentHolder1);这是代码的最后一部分,如果滚动到底部

for (var j:int = 5; j < somedata.length; j++) 
            {

                if(somedata[j]){
                var myLoader:Loader = new Loader();
                var image:Bitmap;
                var url:URLRequest = new URLRequest("http://www.rentaid.info/rent/"+somedata[j]);
                myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
                myLoader.load(url);




                function onImageLoaded(e:Event):void {
                image = new Bitmap(e.target.content.bitmapData);
                var currentY:int = 10;
                var h = image.height;
                var k=image.width/image.height;



                 _contentHolder = new Sprite();
                _contentHolder.y = currentY;
                currentY += _contentHolder.height + 10;
                addChild(_contentHolder);
               _contentHolder.addChild(image);







        for (var j:int = 5; j <somedata.length; j++)
             {
                 _contentHolder1 = new Sprite();


    addChild(_contentHolder1);
                 _contentHolder1.addChild(_contentHolder);


            var viewport:Viewport = new Viewport();

                viewport.y = 0;

                viewport.addChild(_contentHolder1);


            var scroller:TouchScroller = new TouchScroller();
            scroller.width = 300;
            scroller.height = 265;
            scroller.x = 10;
    scroller.y = 100;
            scroller.viewport = viewport;
            addChild(scroller);
        }   
        }}
for(var j:int=5;j对于(var j:int=5;j您可以使用Starling框架和加载程序循环,例如:

private var count:uint = 0; //add this in your class
private var imagesVector:Vector.<Image> = new Vector.<Image>(); //add this in your class
private var imagesUrlVector:Vector.<String> = new <String>["url1","url2","url3","etc"]; //add this in your class

private function loadImages():void 
    {
        //create the loader
        var loader:Loader = new Loader();

        //when texture is loaded
        loader.contentLoaderInfo.addEventListener ( Event.COMPLETE, onComplete );

        //load the texture
        loader.load( new URLRequest (imagesUrlVector[count]));
    }

    private function onComplete ( e : Event ):void
    {
        // grab the loaded bitmap
        var loadedBitmap:Bitmap = e.currentTarget.loader.content as Bitmap;
        // create a texture from the loaded bitmap
        var texture:Texture = Texture.fromBitmap ( loadedBitmap );

        var card:CustomImage = new CustomImage(texture);

        imagesVector.push(card);
        trace("load image number" + count);
        count++;
        if (count < imagesUrlVector.length) {
            loadImages();
        } else displayImages();

    }

    private function displayImages():void {
        var x:uint = 150;
        var i:Number;
        for (i = 0; i < cardVector.length; i++ ) 
        {
            x += 100;
            imagesVector[i].x = x;
            addChild(imagesVector[i]);
        }
    }
private var count:uint=0;//将其添加到类中
private var imagesVector:Vector.=新向量。;//将其添加到类中
私有变量ImageSurvector:Vector.=new[“url1”、“url2”、“url3”、“etc”];//将其添加到类中
私有函数loadImages():void
{
//创建加载程序
变量加载器:加载器=新加载器();
//加载纹理时
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
//加载纹理
load(新的URLRequest(imagessurlvector[count]);
}
完成的私有函数(e:事件):无效
{
//抓取加载的位图
var loadedBitmap:Bitmap=e.currentTarget.loader.content作为位图;
//从加载的位图创建纹理
var-texture:texture=texture.fromBitmap(loadedBitmap);
var卡:CustomImage=新CustomImage(纹理);
imagesVector.push(卡);
跟踪(“加载图像编号”+计数);
计数++;
if(计数
我可以添加一个事件监听器来解决这个问题吗?有人想帮忙吗?如果我有一个事件监听器,当addChild完成后,我会将contentHolder添加到viewport?你的代码太乱了,我甚至无法理解你想做什么。试着使用表格。谈论addChild-这是同步操作,可以这意味着它立即完成。我对编码不太熟悉,不太清楚什么是整洁的还是凌乱的,对此表示抱歉。我只是尝试使用URLRequest在循环中加载图像,然后将它们添加到视口中。如果addChild立即完成,我想知道,如果我添加child,为什么它仍然会说参数child必须为非null,而仅添加child wa它添加到循环中,我尝试将子对象添加到循环外的视口中。我只是想知道,如果没有框架,是否可以执行我想要执行的操作?这会执行相同的结果吗?try应该依赖于此(不使用框架)当前位置如果我的答案对你有帮助,请选择我的答案Hi Roran,我仍在努力哈哈抱歉,我仍无法解决问题,我今天已经尝试了6个多小时,仍然无法解决问题。解决问题后我会选择你的答案。我刚刚在上面发布了我一直在努力的代码,现在没有错误,但是它不显示图像。
private var count:uint = 0; //add this in your class
private var imagesVector:Vector.<Image> = new Vector.<Image>(); //add this in your class
private var imagesUrlVector:Vector.<String> = new <String>["url1","url2","url3","etc"]; //add this in your class

private function loadImages():void 
    {
        //create the loader
        var loader:Loader = new Loader();

        //when texture is loaded
        loader.contentLoaderInfo.addEventListener ( Event.COMPLETE, onComplete );

        //load the texture
        loader.load( new URLRequest (imagesUrlVector[count]));
    }

    private function onComplete ( e : Event ):void
    {
        // grab the loaded bitmap
        var loadedBitmap:Bitmap = e.currentTarget.loader.content as Bitmap;
        // create a texture from the loaded bitmap
        var texture:Texture = Texture.fromBitmap ( loadedBitmap );

        var card:CustomImage = new CustomImage(texture);

        imagesVector.push(card);
        trace("load image number" + count);
        count++;
        if (count < imagesUrlVector.length) {
            loadImages();
        } else displayImages();

    }

    private function displayImages():void {
        var x:uint = 150;
        var i:Number;
        for (i = 0; i < cardVector.length; i++ ) 
        {
            x += 100;
            imagesVector[i].x = x;
            addChild(imagesVector[i]);
        }
    }