2011-08-18 61 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