AS3 BitmapFill问题

问题描述:

希望这是一个简单直接的地方,我错过了一些基本的东西。AS3 BitmapFill问题

试图移动到平铺背景,所以我可以扩展我的游戏地图而不使用愚蠢的巨大位图背景。

我有一系列贴图关键帧上的一系列贴图位图的符号/类,我最终会为每个游戏选择,现在只是试图使其工作并将其硬编码到第一个关键帧frameLabel。这是有问题的代码,似乎严格遵循有关如何从我尝试此之前抬头其他来源(包括API文档)为此建议:

var oceanSource:LOB_Ocean_Bkgs = new LOB_Ocean_Bkgs(); 
      oceanSource.gotoAndStop("Atlantic"); 
      var oceanBitMapData:BitmapData = new BitmapData(oceanSource.width, oceanSource.height); 
      oceanBitMapData.draw(oceanSource); 

      var oceanBackground:Sprite = new Sprite(); 

      oceanBackground.graphics.beginBitmapFill(oceanBitMapData); 
      oceanBackground.graphics.drawRect(0, 0, stage.width, stage.height); 
      oceanBackground.graphics.endFill(); 

      addChild(oceanBackground); 

这里的“大西洋的一半大小的版本“关键帧位图:

enter image description here

正如你看到的,没有什么特别的,甚至没有预期的最终位图,只是想在我去作最后的位图来获取结构和情景驱动的背景选择过程工作。

和我呈现时看到的半尺寸版本。请注意,我没有错误,我只是我没有看到我所期望看到:

enter image description here

当我应该是这样的,在这里它与单片位图背景(全尺寸clicky):

enter image description here

============================ UPDATE在答题=========== ================

以下由www0z0k提供的答案。谢谢!

我已经将它改成了足够大的固定值,足以让所有游戏按预期进行。

var oceanSource:LOB_Ocean_Bkgs = new LOB_Ocean_Bkgs(); 
      oceanSource.gotoAndStop("Pacific"); 
      var oceanBitMapData:BitmapData = new BitmapData(oceanSource.width, oceanSource.height); 
      oceanBitMapData.draw(oceanSource); 

      //oceanBackground is public var declared with class 
      oceanBackground.graphics.beginBitmapFill(oceanBitMapData); 
      oceanBackground.graphics.drawRect(0, 0, 6400, 4000); 
      oceanBackground.graphics.endFill(); 

      //deselect ships listener 
      oceanBackground.addEventListener(MouseEvent.CLICK, clearShips); 

      addChildAt(oceanBackground, 0); 

现在只需要使它由场景文件驱动,并且还可以让我的六角形网格恢复;第二部分是从背景中分离出六边形网格,所以它的颜色也可以由场景或玩家来控制。

而且还渲染出一些更好看的花木海洋位图。

enter image description here enter image description here

+0

does'oceanSource.gotoAndStop(“Atlantic”);''addChild(oceanSource);'看起来像预期的那样? – www0z0k

好像问题就在这里:

oceanBackground.graphics.drawRect(0, 0, stage.width, stage.height); 

应该

oceanBackground.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); 

因为widthheight基于内容的大小来计算,而stageWidthstageHeight回报ctual swf舞台尺寸
(请参阅示例here

+0

根据您的回答查看上面的更新。谢谢! – vossiewulf