ArgumentError:错误#2015:无效的位图数据

发布于 2024-08-17 04:12:46 字数 2429 浏览 6 评论 0原文

我在加载位图数据时遇到问题。我收到以下错误

Engine Init //trace
loadimage//trace
ArgumentError: Error #2015: Invalid BitmapData.
    at flash.display::BitmapData()

以下是我的代码。看起来它发生在跟踪 loadimage 之后

package com.objects {

    import flash.display.Sprite;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.net.*;
    import flash.events.*;
    import flash.display.LoaderInfo;

    public class gameObject extends Sprite {

        protected var w:Number;
        protected var h:Number;
        protected var image:BitmapData;
        protected var canvas:Bitmap;
        protected var px:Number;
        protected var py:Number;

        public function gameObject():void
        {
            init();
        }

        private function init():void
        {

        }

        public function loadImage(imageDir:String, w:Number, h:Number, px:Number, py:Number):void
        {
            this.w = w;
            this.y = y;
            this.px = px;
            this.py = py;

            trace("loadimage");
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,imageComplete);
            loader.load(new URLRequest(imageDir));
        }

         private function imageComplete(e:Event):void {
            var loader:LoaderInfo = LoaderInfo(e.target);

            image = Bitmap(loader.content).bitmapData;
            drawImage();
         }

         private function drawImage():void
         {
            var tilePoint:Point = new Point(0,0);
            var tileRect = new Rectangle(py,px,w,h);
            trace(loader.content);
            var canvasData:BitmapData = new BitmapData(w,h);
            trace("got canvas data");
            canvasData.copyPixels(image,tileRect,tilePoint);
            trace("copied pixels");
            canvas = new Bitmap(canvasData);
         }
    }
}

,我调用的方法就像这样

balls = new Array();
            balls[0] = new gameObject();
            balls[0].loadImage("com/images/ball.gif", 15,15,0,0);

当我跟踪 Loader.content 时,下面显示的是

Engine Init
loadimage
[object Bitmap]
ArgumentError: Error #2015: Invalid BitmapData.
    at flash.display::BitmapData()

I am having problems loading a bitmapData. I am getting the following error

Engine Init //trace
loadimage//trace
ArgumentError: Error #2015: Invalid BitmapData.
    at flash.display::BitmapData()

Below is my code. it appears it happens after the trace loadimage

package com.objects {

    import flash.display.Sprite;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.net.*;
    import flash.events.*;
    import flash.display.LoaderInfo;

    public class gameObject extends Sprite {

        protected var w:Number;
        protected var h:Number;
        protected var image:BitmapData;
        protected var canvas:Bitmap;
        protected var px:Number;
        protected var py:Number;

        public function gameObject():void
        {
            init();
        }

        private function init():void
        {

        }

        public function loadImage(imageDir:String, w:Number, h:Number, px:Number, py:Number):void
        {
            this.w = w;
            this.y = y;
            this.px = px;
            this.py = py;

            trace("loadimage");
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,imageComplete);
            loader.load(new URLRequest(imageDir));
        }

         private function imageComplete(e:Event):void {
            var loader:LoaderInfo = LoaderInfo(e.target);

            image = Bitmap(loader.content).bitmapData;
            drawImage();
         }

         private function drawImage():void
         {
            var tilePoint:Point = new Point(0,0);
            var tileRect = new Rectangle(py,px,w,h);
            trace(loader.content);
            var canvasData:BitmapData = new BitmapData(w,h);
            trace("got canvas data");
            canvasData.copyPixels(image,tileRect,tilePoint);
            trace("copied pixels");
            canvas = new Bitmap(canvasData);
         }
    }
}

And my call the the method is like so

balls = new Array();
            balls[0] = new gameObject();
            balls[0].loadImage("com/images/ball.gif", 15,15,0,0);

When I trace the Loader.content, below is what shows

Engine Init
loadimage
[object Bitmap]
ArgumentError: Error #2015: Invalid BitmapData.
    at flash.display::BitmapData()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

情感失落者 2024-08-24 04:12:46

Flash Player 9 仅支持 2880 px 宽度和高度。

Flash Player 9 only support 2880 px width and height.

杯别 2024-08-24 04:12:46

还要检查您的图像是否太大。我在大于 3000 像素的图像上遇到此错误...

also check if your image isn't too large. I got this error on images which were bigger then 3000 pixels ...

英雄似剑 2024-08-24 04:12:46

我认为你想引用 e.target 的 Loader,而不是 LoaderInfo。尝试在 image= 行之前跟踪(loader.content),看看它是否告诉您数据内容是什么类型。

I think you want to reference the Loader of the e.target, not the LoaderInfo. Try to trace(loader.content) right before your image= line and see if it tells you what type of data content is.

恬淡成诗 2024-08-24 04:12:46

尝试将 imageComplete() 更改为:

private function imageComplete(e:Event):void {
    var loader:LoaderInfo = LoaderInfo(e.target);
    var bitmap:Bitmap = loader.content as Bitmap;
    if(bitmap){
        image = bitmap.bitmapData;
        drawImage();
    } else {
        trace("invalid data!");
    }
}

这应该允许您在错误发生之前捕获错误。下一个问题是为什么你的位图没有被正确解析。

Try changing your imageComplete() into this:

private function imageComplete(e:Event):void {
    var loader:LoaderInfo = LoaderInfo(e.target);
    var bitmap:Bitmap = loader.content as Bitmap;
    if(bitmap){
        image = bitmap.bitmapData;
        drawImage();
    } else {
        trace("invalid data!");
    }
}

That should allow you to catch the error before it happens. The next question is WHY your bitmap isn't parsed okay.

离笑几人歌 2024-08-24 04:12:46

好的,现在我修好了。如果您仔细查看代码,您将看到为我的类变量“w”设置的属性 Y

Ok , now I fixed it. If you take a good look at the code, you will see the property Y being set for my class varible 'w'

浅听莫相离 2024-08-24 04:12:46

我只是想插话并说我收到此错误的 PNG 文件已被异步写入/损坏的上传截断

当我后来使用 Loader / URLRequest 加载 PNG 时,加载成功完成loader.content 属性返回一个位图,它有一个有效的宽度和高度属性,一切看起来都有效。

但是,一旦您尝试访问像素数据(getPixel32copyPixelsTexture.uploadFromBitmapData),它就会抛出:

ArgumentError: Error #2015: Invalid BitmapData.

I just wanted to chime in and say that I got this error for a PNG file that had been truncated by an asynchronous write / broken upload.

When I later loaded the PNG with a Loader / URLRequest the load completed successfully, the loader.content property returned a Bitmap, it had a valid width and height property, everything looks valid.

But as soon as you tried to access the pixel data (getPixel32, copyPixels, or Texture.uploadFromBitmapData), it threw:

ArgumentError: Error #2015: Invalid BitmapData.
南风起 2024-08-24 04:12:46

我用这段代码解决了:

    if (myMC.width > 1&& myMC.height>1 && myMC.width<3000&& myMC.height<3000){          
        bitmapData = new BitmapData(myMC.width,myMC.height,true,1);
    }   else{
        bitmapData = new BitmapData(500,500,true,1);
    }   

I solved with this code:

    if (myMC.width > 1&& myMC.height>1 && myMC.width<3000&& myMC.height<3000){          
        bitmapData = new BitmapData(myMC.width,myMC.height,true,1);
    }   else{
        bitmapData = new BitmapData(500,500,true,1);
    }   
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文