如何在动作脚本的舞台上引用位图?

时间:2020-03-05 18:47:30  来源:igfitidea点击:

我们如何使用ActionScript 3在Flash舞台上引用位图?

我在Flash的舞台上有一个位图,在电影的结尾,我想将它换成电影循环之前序列中的下一个。在我的图书馆中,我有3张图像,为动作脚本导出,类名为img1 / img2 / img3. 这是我在Flash中设置图层的方式。

layer 5 : mask2:MovieClip
layer 4 : img2:Bitmap
layer 3 : mask1:MovieClip
layer 2 : img1:Bitmap
layer 1 : background:Bitmap

在影片的结尾,我想将img1与img2交换,以便影片无缝循环,然后理想地将img2(在第4层)与img3交换,依此类推,直到到达图像的末尾。

但是我找不到如何参考已经在舞台上(在设计时)放置的图像的方法,任何人对如何执行此操作有任何想法吗?

最后的电影有望从Web服务器动态加载图像(我有这段代码)并显示它们以及img1 / img2 / img3.

任何帮助,将不胜感激。

编辑:

@ 81bronco,我尝试了这个,但是实例名称对于图形来说是灰色的,它将只允许我使用动画片段和按钮来实现。我一半通过将它们变成MoveClip,并在添加新的MoveClip之前清除了MoveClip中的图像来使其工作(使用比vanhornRF建议的更简单的东西),但是由于某些奇怪的原因,当蒙版插入图像时,我将其清除了回来面具动画。

解决方案

回答

应该是这样的:

imageHolder.removeChild( imageIndex )

或者

imageHolder.removeChildByName( imageName )

在那之后

imageHolder.addChild( newImage )

回答

要在舞台上引用某些东西,我们需要给舞台实例一个名称,而不给库中的符号一个类名。

单击舞台上的项目,然后查看属性面板。项目尺寸的输入框上方应有一个文本输入框。在此输入名称。

然后,在代码的其他地方,可以通过实例名称在舞台上引用该项目。

回答

我可能会在文档类中做类似的事情

for(var i:int=0; i<numChildren; i++){
    trace(getChildAt(i),"This is the child at position "+i);
}

之所以这样做,是因为我仍然在Flash IDE中进行编码,并且它的调试器在大多数情况下都很难工作,因此更容易跟踪变量,因此我们可以使用该for循环来打印当前项目的对象名称。在舞台上,或者使用调试程序也可以找到对象。

现在我们有了孩子,并且他们在该阶段中实际处于哪个索引下,可以通过调用getChildAt(int)来引用它们,可以删除ChildAt(int),可以添加ChildAt(displayObject,int)和swapChildrenAt(int,int )。这些参数中的int表示trace语句返回的索引位置,而displayObject显然仅表示我们想要添加到舞台或者父DisplayObject的任何内容。

使用这4个命令,我们应该可以自由地重新布置舞台上的所有电影剪辑,以使它们看起来可以无缝过渡。

@ 81bronco One如果我们要独特地专门引用它们,则绝对应该在舞台上命名资产,以免在舞台上出现很多物品时避免任何混乱

回答

嘿Re0sless,当我们从舞台上删除这些项目时,它们是否附有任何事件侦听器,计时器或者加载器?任何这些事情都可能使对象卡在闪存的内存中,而无法正确删除。另外,除了删除项目之外,也许还尝试将其清零?有时,这有助于清除其引用,以便可以将其正确销毁。

当然,这也可能很愚蠢,例如一次删除该项目也不会从将来的框架中删除该项目,但是我真的不这么认为。