ArgumentError: Error #2015: Ungültige BitmapData
Ich habe Probleme beim laden eines bitmapData. Ich erhalte die folgende Fehlermeldung
Engine Init //trace
loadimage//trace
ArgumentError: Error #2015: Invalid BitmapData.
at flash.display::BitmapData()
Unten ist mein code. es scheint, dass es passiert, nachdem die 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);
}
}
}
Und mein Ruf das die Methode ist, wie so
balls = new Array();
balls[0] = new gameObject();
balls[0].loadImage("com/images/ball.gif", 15,15,0,0);
Wenn ich trace den Loader.Inhalt, unten ist das, was zeigt
Engine Init
loadimage
[object Bitmap]
ArgumentError: Error #2015: Invalid BitmapData.
at flash.display::BitmapData()
InformationsquelleAutor numerical25 | 2010-01-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Flash Player 9 unterstützt nur 2880 px in Breite und Höhe.
Ja. kb2.adobe.com/cps/496/cpsid_49662.html
InformationsquelleAutor Arindam
überprüfe auch, ob dein Bild nicht zu groß ist. Ich habe diesen Fehler auf-Bilder waren größer als 3000 Pixel ...
InformationsquelleAutor Frank
Ich denke, Sie verweisen möchten den Loader von der e.Ziel, nicht das LoaderInfo. Versuchen trace(loader.Inhalt), direkt vor Ihrem Bild= Linie und sehen, ob es Ihnen sagt, welche Art von Daten ist.
was merkwürdig ist ist, dass es funktioniert, wenn ich hart code canvasData Breite und Höhe. aber wenn ich die Variablen, die es nicht
InformationsquelleAutor justkevin
Versuchen Sie Ihr imageComplete() in:
Sollte ermöglichen Sie, um den Fehler abzufangen, bevor es geschieht. Die nächste Frage ist, WARUM die bitmap nicht geparst okay.
InformationsquelleAutor grapefrukt
Ok , jetzt habe ich es behoben. Wenn Sie nehmen Sie einen guten Blick auf den code werfen, werden Sie sehen, die Eigenschaft Y-set für meine Klasse die Variable 'w'
InformationsquelleAutor numerical25
Ich wollte nur läuten und sagen, dass ich diesen Fehler für eine PNG-Datei hatte, wurden abgeschnitten durch ein asynchrones schreiben /broken hochladen.
Wenn ich später geladen, die PNG-Datei mit einer
Loader
/URLRequest
die laden erfolgreich abgeschlossen, dieloader.content
- Eigenschaft zurückgegebenBitmap
es hatte einen gültigenwidth
undheight
Eigenschaft, alles sieht gültig.Aber sobald man versucht, Zugriff auf die pixel-Daten (
getPixel32
,copyPixels
oderTexture.uploadFromBitmapData
), es warf:InformationsquelleAutor Jeff Ward
Ich gelöst mit diesem code:
InformationsquelleAutor Alejandro Aranda