caching und rendering eines spritesheets funzt nicht [Flash 10]
| Beiträge: 15 Registriert: Jul 2011
| 26.10.2011, 02:50
Hallo Leute;
ich wurde gerne meine spritesheets cachen (in Array schmeissen). Ich will mein System so haben dass meine Objekte auf den Cache (es wird mehrere unterschiedliche Zaches geben) mit den bitmapDatas bloss noch zugreifen muessen. Aber irgendwie funktioniert das nicht, denn es wird absolut nichts gerendert. Und zwar gar nichts. Fehlermeldungen habe ich auch keine gesehen.
Im cache selbst befindet sich durchaus was (ich gehe mal davon aus dass es bitmapDatas sind) und null ist es auch nicht aber irgendwie wird rein gar nichts aus dem cache heraus gerendert.
Es wäre sehr nett, wenn mir da bitte jemand weiterhelfen koennte denn ich komme da einfach nicht mehr weiter. Vielen Dank.
diese Funktion soll die einzelnen Titels aus dem Spritesheet heraus erstellen und in einen Array (cache) schmeissen
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | private function tileToCache():void {
var tileBitmapData:BitmapData = new BitmapData(tileWidth, tileHeight, true, 0x00000000);
var tilePt:Point = new Point(0, 0);
var tileRect:Rectangle = new Rectangle;
tileCache = [];
for (var tileCtr:int = 0; tileCtr < tilesLength; tileCtr++) {
tileBitmapData.lock();
tileRect.x = int((tileCtr % spritesPerRow)) * tileWidth;
tileRect.y = int((tileCtr / spritesPerRow)) * tileHeight;
tileBitmapData.copyPixels(tileSheet, tileRect, tilePt);
tileBitmapData.unlock();
tileCache.push(tileBitmapData);
}
}
|
diese Funktion soll die Tiles aus dem Array heraus auf einen Hintergrund rendern mit der copyPixels-Methode
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | public function renderCachedTile(canvasBitmapData:BitmapData, tileArray:Array):void
{
tileCache = tileArray;
tileArray = [];
x = nextX;
y = nextY;
point.x = x;
point.y = y;
tileRect.x = tileWidth;
tileRect.y = tileHeight;
if (animationCount >= animationDelay)
{
animationCount = 0;
if(reverse)
{
currentTile--;
if (currentTile < 1)
{
currentTile = tilesLength - 1;
}
} else {
currentTile++;
if (currentTile >= tilesLength - 1)
{
currentTile = 0;
}
}
} else {
animationCount++;
}
canvasBitmapData.lock();
canvasBitmapData.copyPixels(tileCache[currentTile], tileRect, point);
canvasBitmapData.unlock();
}
|
| Geändert von drpelz am 26.10.11 um 02:51 Uhr | |
| | Beiträge: 5285 Wohnort: Bernau (bei
Berlin) Registriert: Nov 2002
| 26.10.2011, 22:57
Hi,
BitmapData an sich ist kein Anzeigeobjekt. Mir fehlt die Zuweisung der BitmapData an eine Bitmap-Instanz in deinem Skript. | |
| Ähnliche Beiträge zum Thema | 13.09.2021 - Willisquirion 08.05.2022 - Indy_Crossover 28.07.2022 - TateBauch 13.09.2022 - Rennier |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News
Regeln & Bedingungen
|