3 Stimmen

Argumentfehler: Fehler #2015: Ungültige BitmapData

Ich habe Probleme beim Laden einer BitmapData. Ich erhalte den folgenden Fehler

Engine Init //trace
loadimage//trace
ArgumentError: Fehler #2015: Ungültige BitmapData.
    at flash.display::BitmapData()

Unten ist mein Code. Es scheint, dass der Fehler nach dem trace loadimage auftritt

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);
         }
    }
}

Und mein Aufruf der Methode sieht wie folgt aus

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

Wenn ich den Loader.content trace, wird Folgendes angezeigt

Engine Init
loadimage
[object Bitmap]
ArgumentError: Fehler #2015: Ungültige BitmapData.
    at flash.display::BitmapData()

3voto

Arindam Punkte 31

Der Flash Player 9 unterstützt nur eine Breite und Höhe von 2880 px.

1voto

Frank Punkte 4745

Überprüfen Sie auch, ob Ihr Bild nicht zu groß ist. Ich habe diesen Fehler bei Bildern erhalten, die größer als 3000 Pixel waren...

0voto

justkevin Punkte 3019

Ich glaube, du möchtest den Loader des e.target referenzieren, nicht den LoaderInfo. Versuche, loader.content direkt vor deiner image= Zeile zu verfolgen und sieh nach, ob es dir sagt, um welche Art von Dateninhalt es sich handelt.

0voto

grapefrukt Punkte 26942

Versuchen Sie, Ihre imageComplete() in Folgendes zu ändern:

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("Ungültige Daten!");
    }
}

Dadurch sollten Sie in der Lage sein, den Fehler zu erkennen, bevor er auftritt. Die nächste Frage ist, warum Ihr Bitmap nicht ordnungsgemäß verarbeitet wird.

0voto

numerical25 Punkte 10246

Ok, jetzt habe ich es behoben. Wenn du dir den Code genau anschaust, wirst du sehen, dass die Eigenschaft Y für meine Klassenvariable 'w' festgelegt wird

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X