2011-09-22 116 views
0

我的代碼只是循環一個xml文件並創建'pages'(稍後動畫)。AS3不添加Sprite到MovieClip

這一切都工作正常,但現在我想添加一個精靈覆蓋整個頁面的內容如果XML的內容包含一個URL。

在運行時,我可以看到正在處理對URL的檢查,並且正在生成覆蓋圖,但我無法在頁面上「看到」它。

下面的代碼位於一個for循環在XML文件中的每個頁面:

var page:Page = new Page(); //MovieClip in my library 
// ... other stuff 
var textMC:FadeText = new FadeText(xml); //load the text from the xml fragment for this page 
//if the text contains a URL (using RegExp) 
if(textMC.hasLink()) 
{ 
    var button:Sprite = new Sprite(); 
    button.graphics.beginFill(0x000000); 
    button.graphics.drawRect(0, 0, 1, 1); 
    button.name= textMC.getLink(); 
    button.x = button.y = button.alpha = 0; 
    button.width = rectangle.width; 
    button.height = rectangle.height; 
    button.buttonMode = true; 
    button.addEventListener(MouseEvent.CLICK, goToUrl, false, 0, true); 
    page.addChildAt(button, page.numChildren); 
} 
//... more code - such as add page to stage. 

從(使用Firebug FlashBug)正在創建的按鈕控制檯,但我不能看到它在屏幕上所以我猜測addChild位有問題。

什麼是錯,我該如何解決?

[編輯] 設定了阿爾法1我可以看到覆蓋IS被添加到頁面,但它沒有改變我的光標或響應鼠標點擊。

我現在認爲這是XML錯誤。它是正確解析的XML(否則FlashPlayer會在我的臉上拋出異常),看起來這個代碼在除了第二個頁面以外的每個頁面上都能正常工作。此外,如果第二個頁面被設置爲可見(如果創建頁面或不創建頁面中的XML標記),則其他頁面覆蓋頁面都不起作用。

+0

你的動畫片段添加到舞臺上了嗎? – JNDPNT

+0

我已將按鈕的alpha值更改爲1 - 是的,它絕對被添加到頁面中。 –

+0

是的,它被添加到頁面...但是頁面添加到某處?這就是我想知道的:-)。你說這是一個圖書館動畫片段。該movieclip是否也添加到您的文檔根/階段? – JNDPNT

回答

0

不合邏輯的回答:

stage.addChild(page);替換stage.addChildAt(page,i+1);

我正在抓着吸管。已經花費FAR太長時間在這個blip上工作,但它的工作原理!我不知道它爲什麼起作用,在這一點上我不在乎;有用!!! (對不起,我不專業,但是我已經花了兩年半的時間在這方面的工作和剛剛得到它的工作!)

如果有人想解釋爲什麼工作,感覺很自由。我非常想知道爲什麼會發生這種努力去解決它。

0
button.x = button.y = button.alpha = 0; 

集阿爾法1

button.alpha = 1; 

和檢查rectangle.width,rectangle.height

最後一件事,如果它的真實與否檢查textMC.hasLink()。如果它是真的,那麼你的代碼還有另一個與本示例代碼無關的問題。

+0

請閱讀上面的評論和我的編輯。 –

1

對不起,這個線程但我能想到的一件事是,因爲你指定一個z位置來放置你的頁面可能是由(i + 1)生成的z位置不是下一個線。 AS3不允許在AS2中允許顯示對象放置在它們之間具有空的「圖層」的「圖層」上。

我的猜測是,在循環過程中,循環不會產生留下空白圖層的頁面。 stage.addChild(page)實際工作的原因是因爲它只是搜索該堆棧中的下一個空白層,因爲您沒有指定它。