AS3中的Event.SOUND_COMPLETE [英] Event.SOUND_COMPLETE in AS3

查看:220
本文介绍了AS3中的Event.SOUND_COMPLETE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经看到了很多foruns尝试使一个声音运行后,另一个



在这种情况下,LoaderS2后LoaderS1 ...



有人可以帮忙,这里是我的代码...我不知道该干什么了...:S

这是一个程序显示2张图片和用户需要选择正确的一个后听声音。

这个想法是我加载2个图像后,我将运行LoaderS1将运行和HL_Left将使矩形环绕图片来突出显示图像,当完成时,他将再现第二个soun LoaderS2。

这就是我想要做的...需要帮助和快速...

  import flash.display.Loader; 
import flash.net.URLRequest;
import flash.events.Event;

var Img_Sd:Array = new Array(5);
var Escolhas:Array = new Array(5);
var Respostas:Array = new Array(0,1,0,1,0)

var Resultado:Number = 0;
var Pos:Number = 0;

var i:Number = 0;
var b:Number = 0;

var urlE:String;
var urlD:​​String;
var urlS1:String;
var urlS2:String;
var urlS3:String;

var Loader_ESQ:Loader = new Loader();
var Loader_DIR:Loader = new Loader();
var Loader_S1:Sound = new Sound();
var Loader_S2:Sound = new Sound();
var Loader_S3:Sound = new Sound();

var pasta_SND:String =Sons /;
var pasta_IMG:String =图片/;
var num_Imag:Number = 0;
var string_aux:String;
var flag:Number = 0;

$ b $ //数学公式为$($ i $ 0; i <= 4; i ++)
{$ (i + 1)+E),((i + 1)+D),17,18,20]; b
$ b Img_Sd [i] = [
}

//事件监听器监控器
BT_EscolhaDIR.addEventListener(MouseEvent.CLICK,ClickDir);
BT_EscolhaESQ.addEventListener(MouseEvent.CLICK,ClickESQ);

//BT_Reeniciar.addEventListener(MouseEvent.CLICK,ClickRe);

LoadImg();
// Pos = Pos + 1;

函数ClickESQ(event:MouseEvent):void
{
Escolhas [Pos] = 0;
Pos = Pos + 1;
LoadImg();


函数ClickDir(event:MouseEvent):void
{

Escolhas [Pos] = 1;
Pos = Pos + 1;
LoadImg();


function audioComplete(e:Event):void
{
Loader_S2.play();
HL_Left.visible = false;


$ b函数LoadImg()
{
if(Pos <5)
{
urlE = pasta_IMG + Img_Sd [Pos] [0] +。png;
urlD = pasta_IMG + Img_Sd [Pos] [1] +。png;

Loader_ESQ.load(new URLRequest(urlE));
Loader_DIR.load(new URLRequest(urlD));


// Pos = Pos + 1;


EscolhaESQ_MC.addChild(Loader_ESQ);
EscolhaDIR_MC.addChild(Loader_DIR);
HL_Left.visible = true;
LoadSnd();

// setTimeout(audioComplete,Loader_S1.length);


if(Pos == 5)
{
BT_EscolhaDIR.enabled = false;
BT_EscolhaESQ.enabled = false;
(b = 0; b <= 4; b ++)
{
if(Escolhas [b] == Respostas [b])
{
Resultado = Resultado + 1;
}
trace(Escolha,Escolhas [b],:Resposta,Respostas [b], - ,Resultado);
}
Pos = 6;



函数LoadSnd()
{
urlS1 = pasta_SND + Img_Sd [Pos] [2] +。mp3;
urlS2 = pasta_SND + Img_Sd [Pos] [3] +。mp3;
urlS3 = pasta_SND + Img_Sd [Pos] [4] +。mp3;

Loader_S1.load(new URLRequest(urlS1));
Loader_S2.load(new URLRequest(urlS2));
Loader_S3.load(new URLRequest(urlS3));
Loader_S1.play();
Loader_S1.addEventListener(Event.SOUND_COMPLETE,audioComplete);


解决方案声音类不派遣 Event.SOUND_COMPLETE 事件。你要找的是 SoundChannel 类( http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundChannel.html )。


$ b

声音类的 play 方法返回一个 SoundChannel 实例,所以你想要做的是:

  var s1Channel:SoundChannel = Loader_S1 。玩(); 
s1Channel.addEventListener(Event.SOUND_COMPLETE,audioComplete);


I already saw a lot of foruns to try make one sound run after the other

In this case LoaderS2 after LoaderS1...

Can someone help, here is my code... i dont know what to do anymore... :S

this is a program to show 2 images and the user need to chose the right one after listen the sounds.

The idea is after i load the 2 images i will run LoaderS1 will run and HL_Left will make a rectangle arround the picture to highlight the image and when finish he will reproduct the second soun LoaderS2.

This is what i want to do... need help and fast...

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;

var Img_Sd:Array = new Array(5);
var Escolhas:Array = new Array(5);
var Respostas:Array = new Array(0,1,0,1,0)

var Resultado:Number = 0;
var Pos:Number = 0;

var i:Number = 0;
var b:Number = 0;

var urlE:String;
var urlD:String;
var urlS1:String;
var urlS2:String;
var urlS3:String;

var Loader_ESQ:Loader = new Loader();
var Loader_DIR:Loader = new Loader();
var Loader_S1:Sound = new Sound();
var Loader_S2:Sound = new Sound();
var Loader_S3:Sound = new Sound();

var pasta_SND:String = "Sons/";
var pasta_IMG:String = "Images/";
var num_Imag:Number = 0;
var string_aux:String;
var flag:Number = 0;


//Preenchimento do array com a informação dos ficheiros (Imagens e Sons)
for (i=0; i<=4; i++)
{

        Img_Sd[i] = [((i+1)+"E"),((i+1)+"D"),17,18,20];
}

//Event Listeners para supervisionar o estado dos botões
BT_EscolhaDIR.addEventListener(MouseEvent.CLICK, ClickDir);
BT_EscolhaESQ.addEventListener(MouseEvent.CLICK, ClickESQ);

//BT_Reeniciar.addEventListener(MouseEvent.CLICK, ClickRe);

LoadImg();
//Pos = Pos+1;

function ClickESQ(event:MouseEvent): void 
{
    Escolhas[Pos]=0;
    Pos = Pos+1;
    LoadImg();
}

function ClickDir(event:MouseEvent): void 
{

    Escolhas[Pos]=1;
    Pos=Pos+1;
    LoadImg();
}

function audioComplete(e:Event): void
{
    Loader_S2.play();
    HL_Left.visible=false;
}


function LoadImg()
{
    if (Pos<5)
    {
        urlE = pasta_IMG + Img_Sd[Pos][0] +".png";
        urlD = pasta_IMG + Img_Sd[Pos][1] +".png";

        Loader_ESQ.load(new URLRequest(urlE));
        Loader_DIR.load(new URLRequest(urlD));


        //Pos = Pos + 1;


        EscolhaESQ_MC.addChild(Loader_ESQ);
        EscolhaDIR_MC.addChild(Loader_DIR);
        HL_Left.visible=true;
        LoadSnd();

        //setTimeout(audioComplete, Loader_S1.length);
    }

    if (Pos == 5)
    {
        BT_EscolhaDIR.enabled = false;
        BT_EscolhaESQ.enabled = false;
        for (b=0;b<=4;b++)
        {
            if (Escolhas[b]==Respostas[b])
            {
                Resultado = Resultado + 1;
            }
            trace("Escolha",Escolhas[b],":Resposta",Respostas[b],"-",Resultado);
        }
        Pos=6;
    }
}

function LoadSnd()
{
    urlS1= pasta_SND + Img_Sd[Pos][2] +".mp3";
    urlS2= pasta_SND + Img_Sd[Pos][3] +".mp3";
    urlS3= pasta_SND + Img_Sd[Pos][4] +".mp3";

    Loader_S1.load(new URLRequest(urlS1));
    Loader_S2.load(new URLRequest(urlS2));
    Loader_S3.load(new URLRequest(urlS3));
    Loader_S1.play();
    Loader_S1.addEventListener(Event.SOUND_COMPLETE, audioComplete);
}

解决方案

The Sound class does not dispatch the Event.SOUND_COMPLETE event. What you're looking for is the SoundChannel class (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundChannel.html).

The play method of the Sound class returns a SoundChannel instance, so what you want to do is:

var s1Channel:SoundChannel = Loader_S1.play();
s1Channel.addEventListener(Event.SOUND_COMPLETE, audioComplete);

这篇关于AS3中的Event.SOUND_COMPLETE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆