2013-04-29 64 views
0

我想用haxe學習NME來創建一個小遊戲。我在FlashDevelop中用Haxe 2.10設置了NME 3.5.5。爲了畫出遊戲背景,我正在使用Haxe NME調整位圖大小

// Class level variable 
var background : nme.display.Bitmap; 

public function initResources() : Void 
{ 
    background = new Bitmap(Assets.getBitmapData("img/back.png")); 
} 

而在渲染循環中,我正在渲染這樣。

g.clear(); 
g.beginBitmapFill(background.bitmapData, true, true); 
g.drawRect(0, 0, 640, 480); 
g.endFill(); 

這是通過視圖繪製圖像,我需要調整它的大小以適應屏幕。

編輯:

這裏是我使用縮放位圖的功能。它不起作用,屏幕上不顯示任何內容。

public static function resize(source:Bitmap, width:Int, height:Int) : Bitmap 
{ 
    var scaleX:Int = Std.int(width/source.bitmapData.width); 
    var scaleY:Int = Std.int(height/source.bitmapData.height); 
    var data:BitmapData = new BitmapData(width, height, true); 
    var matrix:Matrix = new Matrix(); 
    matrix.scale(scaleX, scaleY); 
    data.draw(source.bitmapData, matrix); 
    return new Bitmap(data); 
} 

謝謝。

編輯2:

終於成功了。我不必要地將它轉換爲int。這是解決方案。

public static function resize(source:Bitmap, width:Int, height:Int) : Bitmap 
{ 
    var scaleX:Float = width/source.bitmapData.width; 
    var scaleY:Float = height/source.bitmapData.height; 
    var data:BitmapData = new BitmapData(width, height, true); 
    var matrix:Matrix = new Matrix(); 
    matrix.scale(scaleX, scaleY); 
    data.draw(source.bitmapData, matrix); 
    return new Bitmap(data); 
} 

回答

1

看看這個Resizing BitmapData in ActionScript 3

您應該使用和的BitmapData.draw縮放的矩陣。

+0

試過那樣。它現在根本不渲染 – 2013-04-29 08:56:52

+0

我使用這種方法,一切正常。你能展示最少的可編譯示例嗎?另外爲什麼不添加位圖到舞臺 - 爲什麼你用beginBitmapFill繪製它? – W55tKQbuRu28Q4xv 2013-04-29 10:16:44

+0

我實際上是將現有的以Java編寫的遊戲移植到Haxe,我通常擁有大量資產並根據用戶的屏幕大小手動調整它。由於每個對象都需要動畫,並且我無法更改添加到舞臺的位圖,所以我將它繪製到了一個精靈遊戲類。 – 2013-04-29 12:01:44