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);
这里的“大西洋的一半大小的版本“关键帧位图:
正如你看到的,没有什么特别的,甚至没有预期的最终位图,只是想在我去作最后的位图来获取结构和情景驱动的背景选择过程工作。
和我呈现时看到的半尺寸版本。请注意,我没有错误,我只是我没有看到我所期望看到:
当我应该是这样的,在这里它与单片位图背景(全尺寸clicky):
============================ 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);
现在只需要使它由场景文件驱动,并且还可以让我的六角形网格恢复;第二部分是从背景中分离出六边形网格,所以它的颜色也可以由场景或玩家来控制。
而且还渲染出一些更好看的花木海洋位图。
好像问题就在这里:
oceanBackground.graphics.drawRect(0, 0, stage.width, stage.height);
应该
oceanBackground.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
因为width
和height
基于内容的大小来计算,而stageWidth
和stageHeight
回报ctual swf舞台尺寸
(请参阅示例here)
根据您的回答查看上面的更新。谢谢! – vossiewulf
does'oceanSource.gotoAndStop(“Atlantic”);''addChild(oceanSource);'看起来像预期的那样? – www0z0k