当前位置:首页> 正文

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

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

How do you reference a bitmap on the stage in actionscript?

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

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

1
2
3
4
5
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建议的内容),但是由于某些奇怪的原因,当蒙版插入图像时,我将其清除了回来做面具动画。


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

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

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


应该是这样的:

1
imageHolder.removeChild( imageIndex )

1
imageHolder.removeChildByName( imageName )

然后是

1
imageHolder.addChild( newImage )

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

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


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

1
2
3
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如果您要独特地专门引用资产,则绝对应该在舞台上命名您的资产,以免在舞台上出现很多物品时避免任何混淆


展开全文阅读

相关内容