2013-04-29 135 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