我正在制作闪光塔防御游戏。我有一个名为“塔”的剪辑。在该剪辑中,您可以找到所有塔类型(火,毒,冰等)。我基本上gotoAndStop("tower type here")
来选择合适的塔。所有这些“塔型”也都是剪辑,在这些剪辑中你可以找到这种塔型的演变(每次你“升级”你的塔,它的外观会发生变化......这是一种演变)。每个进化都是一个片段,在那个片段中有一个声音(当塔射击敌人时我必须播放的声音)。我做gotoAndPlay("shoot")
。
问题是,即使有stop()
,我们也可以听到塔楼,但不应该有任何声音。我注意到了一些事情。如果我删除每个塔型的第一次演变的声音,一切正常,我在地图上放置了一些塔,升级到他们的第二次演变,我们可以在他们拍摄时听到声音。我注意到了别的东西:我没有必要删除夹子“塔”中的第一个塔的声音,与最后一个塔相同,它们工作正常。这真的是因为它们是第一个也是最后一个。例如:火是我的第一座塔,冰是第二座塔。火很好,冰不是。如果我交换它们,那么冰正常工作,火不起作用。只有第一座塔和最后一座塔正在工作。
这让我相信我的剪辑层次结构太复杂而无法包含声音,对于flash来说太复杂了。另外,我在同一个片段中混合图形和声音,我应该创建一个只包含声音的片段吗?
这给我留下了一张wtf脸。我真的不明白发生了什么。如果不清楚,请询问更多细节。谢谢。
答案 0 :(得分:0)
从您所说的,我认为,您将声音直接拖放到MovieClips中。这不是一个好主意,管理一定很痛苦。
相反,我推荐以下选项之一: 1)塔建造,或点击,或发射或任何调用playSound功能,播放适当的声音文件:
function playSound():void {
var mySound:Sound = new Sound();
mySound.load(new URLRequest("towerFireSound.mp3"));
mySound.play();
}
2)如果您不想使用外部文件,可以将声音导入库,并在该声音的属性中选中“导出动作脚本”。不只是像这样玩它
function playSound():void {
var mySound:Sound = new TowerFireSound();
mySound.play();
}