2011-09-22 118 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)实际工作的原因是因为它只是搜索该堆栈中的下一个空白层,因为您没有指定它。