2011-08-18 58 views
0

我在这里遇到了一个严重的问题:我有一个1320 x 1000大的滚动背景。我使用一个精灵作为容器,在其中放置背景画布。此外,我还在背景精灵中添加了一个分数精灵(通过addChild)(一个持有bg画布的分数,使分数出现在bg画布的顶部)。scrollrect with object - help?

我们的目标是,当我添加一个分数时,它应该被粘贴到背景上(即使当卷动移动时;它在背景上应该有一个固定的位置)。

问题是,这不起作用,因为当分数出现时,它随着scrollrect移动,这不是我想要的。我已经用globalToLocal尝试过了,但还没有成功。可能是因为我不太了解globalToLocal(反之亦然)。请任何人都可以帮我解决这个问题吗?提前致谢。

这些都是一些代码摘录:

private var backgroundBitmapData:BitmapData = new BitmapData(1320, 1000, false, 0x000000); 
private var canvasBitmapData:BitmapData = new BitmapData(1320, 1000, false, 0x000000); 

private var canvasBitmap:Bitmap = new Bitmap(canvasBitmapData); 
private var canvasRect:Rectangle = new Rectangle(0, 0, 660, 500); 

private var backgroundSprite:Sprite = new Sprite(); 

backgroundSprite.scrollRect = new Rectangle(0, 0, 660, 500); 
canvasBitmap.scrollRect = new Rectangle(330, 250, 660, 500); 

backgroundSprite.addChild(canvasBitmap); 
backgroundSprite.cacheAsBitmap = true; 

addChild(backgroundSprite); 


tempScoreText = new ScoreTextField(String(10), textFormat, oldAstX, oldAstY, 20); 
scoreTexts.push(tempScoreText); 
backgroundSprite.addChild(tempScoreText); 
+0

如何你是否在移动剪辑?看起来你提到的所有代码都很好(虽然我对此有些困惑,所以我可能会误解)。 – Jacksonkr

+0

希望这有助于(这些代码是只是摘录): 'player.update(stage.mouseX + canvasBitmap.scrollRect.x,stage.mouseY + canvasBitmap.scrollRect.y,plDelay,步骤);​​' 代码2: 'canvasRect.x = player.x - 330; canvasRect.y = player.y - 250; if(canvasRect.x <0)canvasRect.x = 0; if(canvasRect.y <0)canvasRect.y = 0; if(canvasRect.x> 659)canvasRect.x = 659; if(canvasRect.y> 499)canvasRect.y = 499; canvasBitmap.scrollRect = canvasRect;' – drpelz

回答

1

我把样品一起,看看我能看到你正在经历什么,但我不认为我看到,因为同样的事情这个例子似乎像它应该的那样工作。这里是我的例如

var backgroundBitmapData:BitmapData = new BitmapData(1320, 1000, false, 0x000000); 
var canvasBitmapData:BitmapData = new BitmapData(1320, 1000, false, 0xff0000); 

var canvasBitmap:Bitmap = new Bitmap(canvasBitmapData); 
var canvasRect:Rectangle = new Rectangle(0, 0, 660, 500); 

var backgroundSprite:Sprite = new Sprite(); 

backgroundSprite.scrollRect = new Rectangle(0, 0, 660, 500); 
canvasBitmap.scrollRect = new Rectangle(330, 250, 660, 500); 

backgroundSprite.addChild(canvasBitmap); 
backgroundSprite.cacheAsBitmap = true; 

addChild(backgroundSprite); 

var tempScoreText = new TextField(); 
tempScoreText.text = "temp score"; 
backgroundSprite.addChild(tempScoreText); 

this.stage.addEventListener(MouseEvent.MOUSE_MOVE, function(event):void { 
    backgroundSprite.scrollRect.x = mouseX; 
    backgroundSprite.scrollRect.y = mouseY; 
}); 

如果这不是你要找的内容,也许你可以上传SWF对我来说,这样我可以看到你看到了什么?也许SOF聊天也是如此。我一直在坚持和人们帮助我出所以这只是我付出了代价。

+0

非常感谢您的回答。我会尽快尝试,并会让你知道如果这将工作。:) – drpelz

0

如果你想要的项目与滚动矩形滚动:

stage.addChild(item) 

如果你想要的项目被粘,然后只用

addChild(item) 

,并使用

root.scrollRect