如何在动作脚本的舞台上引用位图?
我们如何使用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,当我们从舞台上删除这些项目时,它们是否附有任何事件侦听器,计时器或者加载器?任何这些事情都可能使对象卡在闪存的内存中,而无法正确删除。另外,除了删除项目之外,也许还尝试将其清零?有时,这有助于清除其引用,以便可以将其正确销毁。
当然,这也可能很愚蠢,例如一次删除该项目也不会从将来的框架中删除该项目,但是我真的不这么认为。