如何使用动作脚本3在闪存的舞台上引用位图?
我在flash中的舞台上有一个位图,在电影结束时我想在电影循环之前将它换成序列中的下一个。在我的库中,我有3个图像,导出为actionscript,类名为img1 / img2 / img3。这是我在flash中的图层的设置方式。
layer 5 : mask2:MovieClip
layer 4 : img2:Bitmap
layer 3 : mask1:MovieClip
layer 2 : img1:Bitmap
layer 1 : background:Bitmap
在电影结束时我想用img2交换img1,所以电影无缝循环,然后理想地用img3交换img2(第4层),依此类推,直到我到达我的图片结尾。
但是我无法找到如何引用已经放在舞台上的图像(在设计时),任何人都知道如何做到这一点?
最终电影有望从网络服务器动态加载图片(我有这个位的代码)并显示它们以及img1 / img2 / img3。
任何帮助都将不胜感激。
修改
@ 81bronco,我试过这个,但实例名称是灰色的图形,它只允许我用动画片段和按钮。我把它们变成了活动夹,然后在添加新的一个之前清除了moveclip中的图像(使用更简单的vanhornRF建议的东西),但是有一些奇怪的原因,当面具在我清理出来的图片会回来进行面具动画。
答案 0 :(得分:3)
要在舞台上引用某些内容,您需要为舞台实例指定一个名称 - 不要在库中为该符号指定类名。
单击舞台上的项目,然后查看属性面板。项目尺寸的输入框正上方应该有一个文本输入框。在那里输入名称。
在代码的其他地方,您可以通过它的实例名称在舞台上引用该项目。
答案 1 :(得分:1)
它应该是这样的:
imageHolder.removeChild( imageIndex )
或
imageHolder.removeChildByName( imageName )
之后
imageHolder.addChild( newImage )
答案 2 :(得分:0)
我可能会在您的文档类中执行类似的操作
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),您可以使用addChildAt(displayObject,int)和swapChildrenAt( int,int)。这些参数中的int表示trace语句返回的索引位置,displayObject显然只表示要添加到舞台或父DisplayObject的任何内容。
使用这4个命令,你应该能够自由地重新排列舞台上的任何动画片段,以便它们看起来无缝过渡。
@ 81bronco如果您想要专门引用它们以确保您的资产在舞台上明确命名,以避免任何混淆,如果最终在舞台上有很多项目
答案 3 :(得分:0)
嘿Re0sless,当你从舞台上删除这些项目时,他们是否有任何事件监听器,任何定时器或装载器?任何这些东西都可以使物体在闪存的内存中留下来并且不能正确移除。除了删除项目之外,也可以尝试将其置零?有时这有助于清除其引用,以便可以正确销毁它。
当然它也可能是一些愚蠢的事情,例如在一个实例中移除项目也不会从未来的框架中删除该项目,但我真的不认为是这种情况。