Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3不向MovieClip添加精灵_Actionscript 3 - Fatal编程技术网

Actionscript 3 AS3不向MovieClip添加精灵

Actionscript 3 AS3不向MovieClip添加精灵,actionscript-3,Actionscript 3,我的代码只是在一个xml文件中循环并创建“页面”(稍后会设置动画) 这一切都很好,但是现在如果xml的内容包含URL,我想在页面的整个内容上添加一个精灵 在运行时,我可以看到对URL的检查正在正确处理,覆盖正在生成,但我无法在页面上“看到”它 以下代码位于xml文件中每个页面的for循环中: var page:Page = new Page(); //MovieClip in my library // ... other stuff var textMC:FadeText = new Fade

我的代码只是在一个xml文件中循环并创建“页面”(稍后会设置动画)

这一切都很好,但是现在如果xml的内容包含URL,我想在页面的整个内容上添加一个精灵

在运行时,我可以看到对URL的检查正在正确处理,覆盖正在生成,但我无法在页面上“看到”它

以下代码位于xml文件中每个页面的for循环中:

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位有问题

出了什么问题,我该如何解决

[编辑] 将alpha设置为1后,我可以看到覆盖正在添加到页面中,但它不会更改光标或响应鼠标单击

我现在认为XML有问题。它是正确解析的XML(否则FlashPlayer会在我面前抛出异常),而且似乎除了第二页之外,该代码在每一页都有效。此外,如果第二个页面设置为可见(XML中的标志决定是否创建了该页面),则其他页面覆盖都不起作用

button.x = button.y = button.alpha = 0;
将alpha设置为1

button.alpha = 1;
并检查矩形、宽度、矩形、高度

最后,检查textMC.hasLink()是否为真。如果为真,则代码中存在与此示例代码无关的另一个问题。

不合逻辑的回答:

替换
stage.addChildAt(第i+1页)带有
stage.addChild(第页)

我在抓救命稻草。我花了太多的时间在这个光点上,但它的工作!我不知道它为什么有效,在这一点上我不在乎;它工作!!!(对于这种非职业化的做法,我感到抱歉,但是我已经花了两天半的时间来做这件事,而且我刚刚让它开始工作!)


如果有人想解释它为什么有效,请随意。我非常希望了解为什么会出现这种情况,并努力解决这个问题。

很抱歉,我要删除这个线程,但我能想到的一件事是,因为您指定了一个z位置来放置页面,所以(I+1)生成的z位置可能不是行中的下一个位置。AS3不允许将显示对象放置在“层”上,层之间的“层”为空,这在AS2中是允许的


我的猜测是,在某个点的循环期间,循环不会生成留下空层的页面。
stage.addChild(page)
之所以能真正起作用,是因为它只是在堆栈中搜索下一个空层,因为您没有指定它。

您的movieclip是否添加到stage?我已将按钮的alpha更改为1-是的,它肯定添加到页面中。是的,它被添加到page。。。但页面是否添加到了某个地方?这就是我想知道的:-)。你说这是一部图书馆电影。movieclip是否也添加到文档根/阶段?什么是
矩形
?可能矩形
width
height
0
。矩形是一个矩形。宽度和高度是根据舞台的宽度和高度设置的,因此矩形现在包含舞台的尺寸,以便可以将其传递给其他对象,以便它们知道尺寸。通过外部界面和控制台检查对象,显示按钮的高度和宽度正确。当我将alpha设置为1时,我可以看到它已被添加到舞台上,但单击时它不会更改光标或执行任何操作,这表明在其顶部还有其他内容。。。