• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

How to making voice answer for flash quiz?

Community Beginner ,
Jan 21, 2018 Jan 21, 2018

Copy link to clipboard

Copied

can anyone help me? I want to make a flash quiz with a voice answer ... can I use actionsript 2.0 / ActionSCript 3.0? and how?

TOPICS
ActionScript

Views

1.1K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advisor ,
Jan 22, 2018 Jan 22, 2018

Copy link to clipboard

Copied

You can use as2 or as3, it's up to your knowledge and taste.

make some research on internet like "audio quiz actionscript" or "quiz with sound actionscript"

it's very simple to do it, just associate any voice recorded (unless you are looking for TTS voice than reproduce an written answer which is another story) with Sound object the play it when needed

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 23, 2018 Jan 23, 2018

Copy link to clipboard

Copied

Hi!

Here is a little fun demo using AS3.

Although the code is big, I tried to keep it simple using the Animate CC timeline a lot. If you take a look at the FLA, you'll see it's kind easy to edit and extend.

Code:

Frame 1:

import flash.display.MovieClip;

import flash.display.SimpleButton;

import flash.events.MouseEvent;

import flash.media.Sound;

import flash.media.SoundChannel;

import flash.media.SoundTransform;

import flash.net.URLRequest;

import flash.utils.setTimeout;

var questionDelay:Number = 1000;

var toWin:uint = 70;

var totalQuestions:uint = 10;

var score:uint = 0;

var highscore:uint = 0;

var questionChannel:SoundChannel = new SoundChannel();

var alternativeChannel:SoundChannel = new SoundChannel();

var bgmChannel:SoundChannel = new SoundChannel();

var sfxChannel:SoundChannel = new SoundChannel();   

var questions:Object =

{

    question0: {correct:2, points:10},

    question1: {correct:0, points:30},

    question2: {correct:0, points:20},

    question3: {correct:3, points:50},

    question4: {correct:1, points:10},

    question5: {correct:3, points:20},

    question6: {correct:2, points:20},

    question7: {correct:3, points:20},

    question8: {correct:1, points:10},

    question9: {correct:1, points:50}

}

var audio:Object =

{

    bgm:

    {

        start:"audios/bgm/Moonshine_Town.mp3",

        ingame:"audios/bgm/Bluebird.mp3",

        end:"audios/bgm/Sour_Tennessee_Red.mp3"

    },

    sfx:

    {

        correct:"audios/sfx/335908__littlerainyseasons__correct.mp3",

        wrong:"audios/sfx/142608__autistic-lucario__error.mp3",

        button:"audios/sfx/264446__kickhat__open-button-1.mp3"

    }

};

// start

function start():void

{

    score = 0;

   

    gotoAndStop("start");   

   

    listeners();

   

    playSound(audio.bgm.start, "bgm", 0.2);

   

    if (highscoreText)

        highscoreText.text = "HIGHSCORE: " + highscore;

}

function startGame():void

{

    score = 0;       

   

    gotoAndStop("ingame");

   

    enableQuestions(true);

   

    readQuestion();

    playSound(audio.bgm.ingame, "bgm", 0.2);

       

    scoreText.text = "SCORE: 0";       

}

// ingame

function changeQuestion(e:SimpleButton):void

{

    var alternativeIndex:uint = uint(e.name.slice(11, e.name.length));

    var current:uint = currentFrame - 3;

    var correct:uint = uint(questions["question" + current].correct);

    var points:uint = uint(questions["question" + current].points);

    var letter:MovieClip = this["letter" + alternativeIndex];

   

    enableQuestions(false);

   

    if (alternativeIndex == correct)

    {

        letter.gotoAndStop("correct");

        score += points;

        scoreText.text = "SCORE: " + String(score);

        playSound(audio.sfx.correct, "sfx");

    }       

    else

    {

        letter.gotoAndStop("wrong");

        playSound(audio.sfx.wrong, "sfx");

    }

   

    setTimeout(function():void

    {

        if (current < totalQuestions - 1)

        {

            nextFrame();

            readQuestion();

            enableQuestions(true);

            letter.gotoAndStop("normal");

        }

        else

        {

            playSound(audio.bgm.end, "bgm", 0.2);

           

            if (score >= toWin)

            {

                gotoAndStop("win");

                setWin();

            }

               

            else

            {

                gotoAndStop("lose");

                setLose();

            }               

        }       

    },

    questionDelay);

}

function readQuestion():void

{

    playSound("audios/questions/question_" + (currentFrame - 3) + "/question.mp3", "question");

}

function readAlternative(index:uint):void

{

    playSound("audios/questions/question_" + (currentFrame - 3) + "/alternative_" + index + ".mp3", "alternative");

}

// end

function setWin():void

{

    var percentage:Number = (score - toWin) / (totalPoints() - toWin);

   

    star0.visible = false;

    star1.visible = false;

    star2.visible = false;

    star3.visible = false;

    star4.visible = false;   

   

    if (percentage < 0.2)

        stars(1);

    else if (percentage >= 0.2 && percentage < 0.4)

        stars(2);

    else if (percentage >= 0.4 && percentage < 0.6)

        stars(3);

    else if (percentage >= 0.6 && percentage < 0.8)

        stars(4);

    else if (percentage > 0.8)

        stars(5);

   

    if (highscore < score)

    {

        highscore = score;

        newRecord.visible = true;

    }

    else

        newRecord.visible = false;

       

    finalScoreText.text = String(score);

    listeners();

}

function setLose():void

{

    finalScoreText.text = String(score);

    listeners();

}

function stars(index):void

{

    for (var i = 0; i < index; i++)

        this["star" + i].visible = true;

}

function totalPoints():uint

{

    var sum:uint = 0;

   

    for (var key:String in questions)

        sum += uint(questions[key].points);

   

    return sum;

}

// common

function mouseHandler(e:MouseEvent):void

{

    if (e.type == MouseEvent.MOUSE_DOWN)

    {

        if (e.currentTarget == startButton)

        {

            playSound(audio.sfx.button, "sfx");

            startGame();

        }                           

        else if (e.currentTarget == homeButton)

            start();

        else if (e.currentTarget == restartButton)

            startGame();

        else if (e.currentTarget.name.indexOf("alternative") == 0)

            changeQuestion(e.currentTarget as SimpleButton);

    }

    else if (e.type == MouseEvent.MOUSE_OVER)

    {       

        if (e.currentTarget.name.indexOf("alternative") == 0)

            readAlternative(uint(e.currentTarget.name.slice(11, e.currentTarget.name.length)));

    }

}

function playSound(path:String, channelType:String, volume:Number = 1, start:Number = 0, loops:int = 0):void

{

    var sound:Sound = new Sound();   

    var sTransform:SoundTransform = new SoundTransform();

   

    sound.load(new URLRequest(path));   

   

    if (channelType == "bgm")

    {

        bgmChannel.stop();

        bgmChannel = sound.play(start, loops);

        sTransform.volume = volume;

        bgmChannel.soundTransform = sTransform;

    }       

    else if (channelType == "sfx")

    {

        sfxChannel.stop();

        sfxChannel = sound.play(start, loops);

        sTransform.volume = volume;

        sfxChannel.soundTransform = sTransform;

    }

    else if (channelType == "question")

    {

        questionChannel.stop();

        questionChannel = sound.play(start, loops);

        sTransform.volume = volume;

        questionChannel.soundTransform = sTransform;

    }

    else if (channelType == "alternative")

    {

        alternativeChannel.stop();

        alternativeChannel = sound.play(start, loops);

        sTransform.volume = volume;

        alternativeChannel.soundTransform = sTransform;

    }

}

function enableQuestions(enable:Boolean):void

{

    if (enable)

    {

        if (alternative0 && !alternative0.hasEventListener(MouseEvent.MOUSE_DOWN))

        {

            setTimeout(function():void

            {

                alternative0.mouseEnabled = true;

                alternative1.mouseEnabled = true;

                alternative2.mouseEnabled = true;

                alternative3.mouseEnabled = true;

               

                alternative0.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

                alternative1.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

                alternative2.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

                alternative3.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

               

                alternative0.addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);

                alternative1.addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);

                alternative2.addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);

                alternative3.addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);

            },

            questionDelay * 2);           

        }       

    }

    else

    {

        alternative0.mouseEnabled = false;

        alternative1.mouseEnabled = false;

        alternative2.mouseEnabled = false;

        alternative3.mouseEnabled = false;

       

        alternative0.removeEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

        alternative1.removeEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

        alternative2.removeEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

        alternative3.removeEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

       

        alternative0.removeEventListener(MouseEvent.MOUSE_OVER, mouseHandler);

        alternative1.removeEventListener(MouseEvent.MOUSE_OVER, mouseHandler);

        alternative2.removeEventListener(MouseEvent.MOUSE_OVER, mouseHandler);

        alternative3.removeEventListener(MouseEvent.MOUSE_OVER, mouseHandler);

    }

}

function listeners():void

{   

    if (startButton && !startButton.hasEventListener(MouseEvent.MOUSE_DOWN))

        startButton.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

   

    if (homeButton && !homeButton.hasEventListener(MouseEvent.MOUSE_DOWN))

        homeButton.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

   

    if (restartButton && !restartButton.hasEventListener(MouseEvent.MOUSE_DOWN))

        restartButton.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

}

Frame2:

stop();

start();

FLA download:

animate_cc_as3_super_quiz_game.zip - Google Drive

Preview:

animate_cc_as3_super_quiz_game_01.png

animate_cc_as3_super_quiz_game_02.png

animate_cc_as3_super_quiz_game_03.png

animate_cc_as3_super_quiz_game.gif

I hope it can help you.

Regards,

JC

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jan 28, 2018 Jan 28, 2018

Copy link to clipboard

Copied

hi JoãoCésar thank you very much for the answer. this I can save as one of my records. but what I want is when there is a written problem that is answered by our voice / user by saying the answer. can it be made that way

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 28, 2018 Jan 28, 2018

Copy link to clipboard

Copied

LATEST

Got it.

You can still make use of the quiz game sample above.

But you're gonna have to solve two problems:

- Record the audio, wich can be done like described in the following links:

Adobe Flash Platform * Capturing sound input

https://code.tutsplus.com/tutorials/create-a-useful-audio-recorder-app-in-actionscript-3--active-583...

- Compare the voice answer with the correct audio for the question. This one is harder, but I guess it's not impossible.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines