2013-02-09 68 views
0

我有这样AS3声音播放时打MC

var idsya1:Idsya1 = new Idsya1(); 
    var iqlab1:Iqlab1 = new Iqlab1(); 
    var ikhsya1:Ikhsya1 = new Ikhsya1(); 


    if (idsya_1.hitTestObject(idsyabox_1)) 
    { 
     idsya_1.enabled = false; 
     //idsya_1.visible = false; 
     idsya_1.buttonMode = false; 
     idsya_1.x = 145.30 ; 
     idsya_1.y = 168.05; 
     idsya1.play(); 
     score+=10; 
     skor.text = " " + score; 
     } 

    if (iqlab_1.hitTestObject(iqlabbox_1)) 
    { 
     iqlab_1.enabled = false; 
    // iqlab_1.visible = false; 
     iqlab_1.buttonMode = false; 
     iqlab_1.x = 719.95; 
     iqlab_1.y = 155.25; 
     iqlab1.play(); 
     score+=10; 
     skor.text = " " + score; 
    } 

    if (ikhsya_1.hitTestObject(ikhsyabox_1)) 
    { 
     ikhsya_1.enabled = false; 
     //idsya_1.visible = false; 
     ikhsya_1.buttonMode = false; 
     ikhsya_1.x = 459.95; 
     ikhsya_1.y = 198.75; 
     ikhsya1.play(); 
     score+=10; 
     skor.text = " " + score; 
    } 

Idsya1,Iqlab1和Ikhsya1脚本是从library..idsya_1,ikhsya_1健全iqlab_1一个影片剪辑。

我的问题是,当idsya_1打idsyabox_1那么idsya1声音会玩,和它的工作,但是当ikhsya_1打ikhsyabox_1的声音播放是ikhsya1和idsya1过了,当iqlab_1打iqlabbox_1那么所有的声音会playing..why这是怎么发生的?

我的意思是,当idsya_1打idsyabox_1然后声音播放是idsya1声音

时iqlab_1打iqlabbox_1然后声音播放是iqlab1声音

当ikhsya_1打ikhsyabox_1的声音播放是ikhsya1声音

我该怎么做?

回答

0

可能是因为您在循环中检查碰撞,并且每当该循环触发时,它都会检查您的每个奇怪名为MovieClips是否存在碰撞并相应播放声音。如果您想每次尝试播放声音都有Boolean属性,以测试它是否已播放。所以你有这样的事情:

if (iqlab_1.hitTestObject(iqlabbox_1) && !iqlab_1SoundHasPlayed) // checking if the sound has already played 
{ 
    iqlab_1.enabled = false; 
// iqlab_1.visible = false; 
    iqlab_1.buttonMode = false; 
    iqlab_1.x = 719.95; 
    iqlab_1.y = 155.25; 
    iqlab1.play(); 
    score+=10; 
    skor.text = " " + score; 

    iqlab_1SoundHasPlayed = true; 
} 
+0

我已经试过这种方式,但问题被改为拖回到原来的位置,如果可能有任何其他方式的动画片段? – 2013-02-11 12:44:26

+0

提供更有帮助的解释,否则恐怕我无法帮助你更多。 – Gio 2013-02-11 14:01:03

+0

但感谢您的回答,我只需添加其他功能即可完成:) – 2013-02-11 16:37:46