0

プレーヤーが各アルファベットをドラッグして正しい順序で配置することになっているas3を使用して、フラッシュcs6で簡単なドラッグアンドドロップアルファベット学習アプリを開発しようとしています...そしてプレーヤーが特定のアルファベットをクリックすると(ムービークリップ)それぞれの発音(mp3オーディオ)が再生されるはずです...オーディオクリップを単一のアルファベットムービークリップにのみ割り当てることができます..しかし、他のすべてのアルファベットで同じことを達成しようとすると、失敗します..私のコードは次のように実行されます....プレーヤーがそのアルファベットの「ムービークリップ」をクリックすると、そのアルファベットの発音オーディオクリップが再生されるように、各アルファベットに異なるオーディオファイルを割り当てる方法を誰か教えてください....

import flash.events.MouseEvent;
import flash.display.MovieClip;

var alphabets:Array = new Array(a1, a2, a3, a4);

var sound1:Letter1 = new Letter1();
a1:addEventListener(MouseEvent.CLICK, play1);
function play1(e:MouseEvent):void
{  sound1.play(); }

alphabets:addEventListener(MouseEvent.MOUSE_DOWN, dragMe);

function dragMe(e:MouseEvent):void
{  e.target.startDrag(); }

alphabets:addEventListener(MouseEvent.MOUSE_UP, dropMe);

function dropMe(e:MouseEvent):void
{  e.target.stopDrag(); }
4

1 に答える 1

1

おそらく、MovieClip (または Sprite) を拡張する単純なクラスSpeakingLetterを作成し、そこにサウンド プロパティを追加する必要があります。その後、別のサウンドを別の MovieClip に割り当て、MouseEvent.CLICK イベント リスナーをすべての SpeakingLetter オブジェクトに追加します。次のようになります。

// SpeakingLetter class
package  
{
    import flash.display.MovieClip;

    public class SpeakingLetter extends MovieClip 
    {
        private var _sound:MySound;

        public function SpeakingLetter(inputSound:MySound) 
        {
            super();
            _sound = inputSound;
        }

        public function playSound():void
        {
            _sound.play();
        }   
    }
}

そして、あなたのメインコードは次のようになります

//MAIN CODE
import flash.events.MouseEvent;
import flash.display.MovieClip;

//You should replace these values with your own - I don't know how you store your sounds
const speakingLetterSounds:Array = [new MySound("sound1"), new MySound("sound2"), new MySound("sound3")];

var speakingLetters:Array = [];
var numOfLetters:uint = 3;
for (var i:int = 0; i < numOfLetters; i++)
{
    var currentLeter:SpeakingLetter = new SpeakingLetter(speakingLetterSounds[i]);
    currentLeter.addEventListener(MouseEvent.CLICK, playLetterSound);
    speakingLetters.push(currentLeter);
}

function playLetterSound(e:MouseEvent):void
{
    var currentLetter:SpeakingLetter = e.target as SpeakingLetter;
    currentLetter.playSound();
}

なので、押された文字の音を鳴らすだけで、ぐちゃぐちゃにならないようにします。

于 2013-10-02T06:47:15.703 に答える